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]; } };