假设一个旋转排序的数组其起始位置是未知的(比如0 1 2 4 5 6 7 可能变成是4 5 6 7 0 1 2)。
需要找到其中最小的元素。
数组中可能存在重复的元素。
class Solution {
public:
/**
* @param num: the rotated sorted array
* @return: the minimum number in the array
*/
int findMin(vector<int> &a) {
// write your code here
int n=a.size();
int left=0,right=n-1;
while(left<right){
int mid=left+(right-left)/2;
if(a[mid]<a[right]) right=mid;
else if(a[mid]>a[right]) left=mid+1;
else{
right--;
}
}
return a[left];
}
};