URL
https://leetcode.com/problems/find-minimum-in-rotated-sorted-array/description/
描述:
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.
解题思路
解题思路基本和Leetcode 154 一样,可以参考
http://blog.csdn.net/zhumingyuan111/article/details/79053949
只是没有元素相等的情况。下面给出迭代和递归的方法。
代码示例
//递归版本
private int findMinHelper(int[]nums,int start,int end){
if(start>=end) return nums[start];
if(nums[start]<nums[end]) return nums[start];
int mid = (start+end)/2;
if(nums[mid]>nums[start]){
return findMinHelper(nums,mid+1,end);
}else {
return findMinHelper(nums, start + 1, mid);
}
}
//迭代版本
private int findMinHelper2(int[]nums,int start,int end){
int mid;
while(start < end){
if(nums[start]<nums[end]) return nums[start];
mid = (start+end)/2;
if(nums[mid]<nums[start]){
start++;
end = mid;
}else{
start = mid+1;
}
}
return nums[start];
}
//提交代码接口实现
public int findMin(int[] nums) {
if(nums==null || nums.length==0){
return 0;
}
return findMinHelper(nums,0,nums.length-1);
}