Find Minimum in Rotated Sorted Array

class Solution {
public:
    int findMin(vector<int>& nums) {
        int l = 0, r = nums.size()-1;
        int n = nums.size();
        while(l<r){
            int mid = (l+r)/2;
            int val = nums[mid];
            int rval = nums[r];
            if(nums[l]<=nums[r])
                return nums[l];
            // 只需要比较最右边的元素
            if(rval<val){
                l = mid+1;
            } else {
                r = mid;
            }
        }
        return nums[l];
    }
};

只需要找到一段有序区间即可,保证这段里面左边的是最小值

posted @ 2021-02-11 03:44  张王李代茂  阅读(49)  评论(0)    收藏  举报