Suppose a sorted array is rotated at some pivot unknown to you beforehand.
(i.e., 0 1 2 4 5 6 7
might become 4 5 6 7 0 1 2
).
Find the minimum element.
You may assume no duplicate exists in the array.
返回二者的较小值
class Solution {
public:
int findMin(vector<int> &num) {
return find(num,0,num.size()-1);
}
int find(vector<int> &A,int left,int right){
if(A[left]<A[right])
return A[left];
int mid = (left+right)/2;
if(A[left]<=A[mid]){
if(mid+1>right)
return A[left];
return min(A[left],find(A,mid+1,right));
}else{
if(mid-1<left)
return A[mid];
return min(A[mid],find(A,left,mid-1));
}
}
};