leetcode153_寻找旋转排序数组中的最小值_二分查找

1. 这题虽然不是完全有序,但是部分有序,可以试试二分查找方法,并且使用的是数组这样的存储形式,根据下标随机访问,适合二分.

class Solution {
public:
    int findMin(vector<int>& nums) {
        //边界情况.
        if(nums.size()==1) return nums[0];
        int start=0, end=nums.size()-1;
        while(start<=end) {
            int mid = start + (end-start)/2;
            //mid值大于end值,说明最小值在右边.
            if(nums[mid]>nums[end]) start = mid+1;
            else {
                //如果mid为数组第1个值或前一个值大于mid值,说明就为第一个最小值,
                //直接返回.
                if(mid==0 || nums[mid-1]>nums[mid]) return nums[mid];
                //否则最小值还在左边.
                else end = mid-1;
            }
        }
        //找不到return -1.
        return -1;
    }
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值