要求:456123这样的数组找最小的即1
思路:二分,找左边界,返回left,这里二分有个问题是mid跟谁比较?答案是可以选最右边的数,可以把左边界定义为第一个小于nums[n-1]的数。本题只有两种情况
class Solution {
public:
int findMin(vector<int>& nums) {
int n=nums.size();
int left=0,right=n-1;
if(nums[left]<=nums[right])return nums[left];
while(left<=right){
int mid=left+(right-left>>1);
if(nums[mid]>nums[n-1])left=mid+1;
else right=mid-1;
}
return nums[left];
}
};