- 还是利用二分查找,若右边增序,将最左边的值和最小值比较,保存更小的,同时丢掉这一块。左边增序同理。
class Solution {
public:
int findMin(vector<int>& nums) {
int start = 0, end = nums.size()-1;
int min = nums[start];
while(start <= end){
int mid = (start+end)/2;
if(min == nums[start])
++start;
else if(nums[mid] <= nums[end]){//右边增序
if(nums[mid]< min) min = nums[mid];
end = mid-1;
}else{//左边增序
if(nums[start]< min) min = nums[start];
start = mid + 1;
}
}
return min;
}
};