Find Minimum in Rotated Sorted Array
Description
Suppose a sorted array 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.
在public class Solution {
/**
* @param nums: a rotated sorted array
* @return: the minimum number in the array
*/
public int findMin(int[] nums) {
// write your code here
if(nums == null || nums.length == 0){
return -1 ;
}
int left = 0 , right = nums.length-1 ;
if(nums[left] < nums[right]){
return nums[left] ;
}
while(left+1 < right){
int mid = left + (right - left) / 2 ;
/*if(nums[mid + 1] > nums[mid] && nums[mid -1] > nums[mid]){
return nums[mid] ;
}else */if(nums[left] <= nums[mid] && nums[mid] > nums[right]){
left = mid+1 ;
}else{
right = mid ;
}
}
if(nums[left] <= nums[right]){
return nums[left] ;
}
return nums[right] ;
}
}