旋转数字的最小数字

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 @   穿过雾的阴霾  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示