(5/31/16)Leetcode 153. Find Minimum in Rotated Sorted Array

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];
    }
}

你可能感兴趣的:((5/31/16)Leetcode 153. Find Minimum in Rotated Sorted Array)