LeetCode 153 Find Minimum in Rotated Sorted Array

思路

本质就是二分搜索的思路,只是目标变了一下。这里只需要将目标变成找第一个比前一个元素小的元素即可。套用的也是九章的二分搜索模版。
【有一个特殊情况是数组没有发生旋转:这个时候其实也不需要特殊处理,只要将判断条件设置为mid > end即可,而不是mid > start】

复杂度

时间复杂度O(logn), 空间复杂度O(1)

代码

class Solution {
    public int findMin(int[] nums) {
        
        int start = 0, end = nums.length-1;
        while(start + 1 < end) {
            int mid = start + (end-start)/2;
            if(mid > 0 && nums[mid] < nums[mid-1]) {
                return nums[mid];
            }
            if(nums[mid] > nums[end]) {
                start = mid;
            } else {
                end = mid;
            }
            
        }
        
        return Math.min(nums[start], nums[end]);
    }
}

猜你喜欢

转载自blog.csdn.net/qq_36754149/article/details/88566290
今日推荐