Medium,用时10分钟,出现一次错误:(见注释)
1.binary search变种,思路是binary search,然而与普通的bs不一样,这里begin和end的移动条件需要改变。
2.Corner Case需要讨论一下(比如长度为2,3,4时分别对应的可能序列)
3.while(begin < end)应该结合的就是begin = mid + 1和end = mid。
4.错误出现在>=,这个错误很难发现,corner case还是没有考虑好
public class Solution {
public int findMin(int[] nums) {
//8:48
int length = nums.length;
if(length == 1) return nums[0];
if(length == 2) return Math.min(nums[0], nums[1]);
if(nums[0] < nums[length-1]) return nums[0];
int begin = 0, end = length - 1;
while(begin < end){
int mid = (begin + end) / 2;
int pivot = nums[mid];
//第一次错误>=写成> corner case还是没有考虑清楚
if (pivot >= nums[0]) begin = mid + 1;
else end = mid;
}
return nums[begin];
}
}