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.
Have you met this question in a real interview?
Analysis:
Use the similar method used in "search in roated sorted array".
Solution:
1 public class Solution { 2 public int findMin(int[] num) { 3 if (num.length==0) return -1; 4 5 int start = 0, end = num.length-1; 6 int mid = -1; 7 8 while (start!=end-1){ 9 mid = (start+end)/2; 10 11 if (num[mid]<num[start]){ 12 end = mid; 13 continue; 14 } 15 16 if (num[mid]>num[end]){ 17 start = mid; 18 continue; 19 } 20 21 return num[start]; 22 } 23 24 if (num[start]>num[end]) return num[end]; 25 else return num[start]; 26 27 } 28 }