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.
比较简单,只是旋转了一次,我们也用二分查找。和最右边的值作比较,比最右边的值大,说明在mid右边,所以left = mid +1;
比右边值小,说明在mid左边,所以right=mid-1
1 class Solution { 2 public: 3 int findMin(vector<int> &num) { 4 int left=0,right = num.size()-1; 5 while(left<=right){ 6 int mid=(right+left)/2; 7 if(num[mid]>num[num.size()-1]) 8 left = mid + 1; 9 else 10 right = mid -1; 11 } 12 return num[left]; 13 } 14 };