刷
June-22-2019
第一反应是这个题也配? 结果做了做还真配。
判断TARGET落点的时候,如果mid < left,那么是这样的
6 7 1 2 3 4 在左边
如果mid > right,那么是
5 6 7 8 1 2 在右边
剩下的情况是 left <= m <= r 没法判断了。。只能l++/r--缩小范围继续。这也回答了FOLLOW UP,worst case = O(n)
public int findMin(int[] nums) {
int l = 0, r = nums.length - 1;
while (l + 1 < r) {
int m = l + (r - l) / 2;
if (nums[m] < nums[l]) {
r = m;
} else if (nums[m] > nums[r]) {
l = m;
} else {
r --;
}
}
return Math.min(nums[l], nums[r]);
}
以前看我发朋友圈,说H难度一遍过,佩服地我五体投地。现在看,有的H题略水。。。