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.
若nums[begin] < nums[end], nums则没有rotate
public class Solution {
public int findMin(int[] nums) {
return findMinHelper(nums, 0, nums.length - 1);
}
private int findMinHelper(int[] nums, int begin, int end){
if(begin == end)
return nums[begin];
if(end - begin == 1)
return Math.min(nums[begin], nums[end]);
int mid = (begin + end)/2;
if(nums[begin] < nums[end]){
return nums[begin];
}
else if(nums[mid] > nums[begin]){
return findMinHelper(nums, mid + 1, end);
}
else{
return findMinHelper(nums, begin, mid);
}
}
}