Find Minimum in Rotated Sorted Array
Total Accepted: 21207 Total Submissions: 65855Suppose 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.
[分析]
二分法, 如果 num[mid] 和相邻elements 不是ordered, 最小值可得. 否则, 查看 low 和 high 是否有序, 跳到无顺序的一半.[注意事项]
NONE
[CODE]
public class Solution {
public int findMin(int[] num) {
if(num==null || num.length < 1) return 0; // ask interviewer which value should return: Integer.MIN_VALUE or throw a Exception.
int low = 0, high = num.length-1;
while(low < high) {
int mid = low + (high-low)/2;
int x = num[mid];
if( mid != num.length-1 && x>num[mid+1]){
return num[mid+1];
} else if(num[mid] < num[low]) {
high = mid;
} else if(num[mid] > num[high]) {
low = mid;
} else {
return num[low];
}
}
return num[low];
}
}