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 };
转载于:https://www.cnblogs.com/desp/p/4345775.html