变量简洁正确完整思路

二分,leftright,对于mid,如果[left]<[mid]则左边是升序,则更新ans=min[left],排除左半段,同理[mid]<[right]则右边升序,则ans=min[mid]更新,排除右半段
 
精确定义
left
mid
right
class Solution {
public:
    int findMin(vector<int>& nums) {
        int n=nums.size();
        int left=0,right=n-1,ans=0x3f3f3f3f;
        while(left<=right){
            int mid=left+(right-left)/2;
            if(nums[left]<=nums[mid]){
                ans=min(ans,nums[left]);
                left=mid+1;
            }else if(nums[mid]<=nums[right]){
                ans=min(ans,nums[mid]);
                right=mid-1;
            }
        }
        return ans;
    }
};

 

posted on 2021-08-04 23:40  offer快到碗里来~  阅读(26)  评论(0)    收藏  举报