题目描述
思路分析
二分。
尾部去重,二分找断点。
代码实现
class Solution {
public:
int findMin(vector<int>& nums) {
int k=nums.size()-1;
while(k>0&&nums[k]==nums[0]){
nums.pop_back();
k--;
}
int l=0,r=nums.size()-1;
if(nums[r]>nums[l]) return nums[l];
while(l<r){
int mid=l+r>>1;
if(nums[mid]<nums[0]) r=mid;
else l=mid+1;
}
return nums[r];
}
};