(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];
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容