Partition Array into Disjoint intervals
我的思维好像固定了 = =…
my solution
1 | class Solution { |
lx 是左边已遍历最大值. e 在每次遍历后将会指向一个从右往左第一个小于这个值的下标.
b 的迭代不会重复, 而 e 的迭代是可能重复的, 这是这个解法的瓶颈.
other solution
PS: 以后没有 the best solution 了. 因为很难说一个算法是 best 的. 因为实际的输入不定. 适用于输入的算法也不定. 并且提交里面往往并不是最好的算法. Discuss 里面才有.
1 | class Solution { |
毫无疑问是比我更好的解法.
唯一可能的疑问是每次迭代所使用的条件有些许复杂. 极端条件如: A {1, 2, 3 … } 下. 这个算法会赋值多次.
而我的解法相对会少很多. (这也是我说大多数情况下不存在 best 的原因)
让我反思的是, 我的思维可能出现了僵化. 一开始我想的办法就是首尾逼近的方式. 所以最后的解法也是类似的结构.
这不禁让我想起之前好像在某个视频中看到的片段. 大意是说: 一个侦探在侦破案件时会让自己忘记一些常识性的东西. 因为这常常会误导自己而忽视重要线索. 或许解法也是如此. 经验同时也可能成为阻止你创新的障碍.
所以有时会有”砍掉重学”这种概念. 我应该想办法规避这种情况. 毕竟”不要让你已获得的东西成为你获取其他东西的障碍”是我坚持的理念.