Cracking the code: 257
如果是sorted,没有rotated的array,很明显我们会用Binary search. 但是它旋转了以后,就不是binary的状态了。我的直觉是先iterate一遍,找到pivot点【第一个 前一个比后一个大】。然后对左右两个subarray进行binary search.
【我觉得我自己上面那个方法不错】
【但是今天看教程,这个方法的理解太赞了】
首先如果是正常的sorted array:生序排列
34012 是rotated
对于Rotated 来使用Binary Search有两种可能的情况。要么mid在左半部分,要么在右半部分。
这里用到了九章算法的一个binary search模板:
Followup-如果数组里有相同数字:
图会变成这样。
没想到连这题都搞不定阿。。。看完视频,不按照九章算法模板就是过不了。
omg。。。最大的错误就是在判断mid的点在左半部分还是右半部分。