将升序数组的后面一部分放前面,求最小值。
显然题目是要O(logN)的做法,所以考虑二分,根据该数组的性质二分即可。
code
class Solution {
public:
int findMin(vector<int>& nums) {
int n=nums.size();
int l=0,r=n-1;
int mid;
while(l<=r){
mid=(l+r)/2;
if(nums[mid]<nums[r]){
r=mid;
}else if(nums[mid]>nums[r]){
l=mid+1;
}else{
//l==r==mid
return nums[mid];
}
}
return nums[mid];
}
};