153. Find Minimum in Rotated Sorted Array(二分查找)

 

Suppose an array sorted in ascending order 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.

Example 1:

Input: [3,4,5,1,2] 
Output: 1

Example 2:

Input: [4,5,6,7,0,1,2]
Output: 0


class Solution {
public:
    int findMin(vector<int>& a) {
        int low = 0;
        int high = a.size() -1 ;
        int mid = low + (high - low) / 2;
        if(a[low] <= a[mid] && a[mid] <= a[high]) return a[low];
        while(low<high) {
            mid = low + (high - low) / 2;
            if(a[low] < a[mid]) {  //right is shift
                low = mid;
            } else {  //left is shift
                high =  mid;
            }
        }
        return a[high+1];
    }
};
原文地址:https://www.cnblogs.com/zle1992/p/12541130.html