旋转数字的最小数字

class Solution {
public:
    int findMin(vector<int>& nums) {
        if(!nums.size())    return -1;
        int n=nums.size()-1;
        while(n>0&&nums[n]==nums[0])    n--;//倒序删除第二段元素
        int l=0,r=n;
        while(l<r)//寻找第一个<nums[0]的数
        {
            int mid=l+r>>1;
            if(nums[mid]>=nums[0])   l=mid+1;
            else r=mid;
        }
        if(nums[l]<nums[0])
            return nums[l];
        else //如果整个序列单调的话,二分结果不对,返回nums[0]
            return nums[0];
    }
};
posted @ 2023-03-15 14:16  穿过雾的阴霾  阅读(18)  评论(0)    收藏  举报