变量简洁正确完整思路
二分,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; } };
浙公网安备 33010602011771号