算法1
思路:二分
具体分析就是,在0-n-1中递增序列,最小值是nums[0],完全翻转后,所有值都是小于nums[0]的,于是我们在二分判断的时候,取得右半段,所以if(nums[mid]>mid)l=mid+1,最后答案就是二分的nums[l]
C++ 代码
class Solution {
public:
int findMin(vector<int>& nums) {
if(nums.back()>=nums[0])return nums[0];
int l=0,r=nums.size()-1;
while(l<r)
{
int mid=l+r>>1;
if(nums[mid]<nums[0]) r=mid;//注意最小值选的是二分的右半段
else l=mid+1;
}
return nums[l];
}
};