154. Find Minimum in Rotated Sorted Array II


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题略水。。。

posted @ 2016-09-22 05:46  哇呀呀..生气啦~  阅读(155)  评论(0编辑  收藏  举报