这道题的思想很简单,就是二分查找,只不过对二分查找稍微改变下,看了代码相信你就一定恍然大明白了
public class FindMinimuminRotatedSortedArray {
int result = Integer.MAX_VALUE;
public int findMin(int[] nums) {
binarySearch(nums, 0, nums.length - 1);
return result;
}
public void binarySearch(int[] nums,int left,int right){
if(left > right){
return;
}
if(nums[left] < nums[right]){
if(nums[left] < result){
result = nums[left];
}
return;
}
else{
int mid = left + (right - left) / 2;
if(nums[mid] < result){
result = nums[mid];
}
binarySearch(nums, left, mid - 1);
binarySearch(nums, mid + 1, right);
}
}
}