L153 Find Minimum in Rotated Sorted Array
Binary Search
Problem:
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] 45123
Output: 1
Solution:
2 conditions:
array[left] < array[mid]: t, that we are in the bigger part, so the the mini is in our right, so move to the right.( left = mid)
else , we are in the smaller part, so go left(right = mid)
public int findMinimum(int[] array){
if(array == null || array.length == 0) return -1;
if(array.length == 1) return array[0];
int left = 0, right = array.length - 1;
if(array[left] < array[right]) return array[left];
while(left + 1 < right){
int mid = left + (right - left) /2;
if(array[mid] > array[left]){
left = mid;
}else{
right = mid;
}
}
return array[right] < array[left] ? array[right] : array[left];
}
Last updated
Was this helpful?