題目:
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.
思路:有點類似之前的一道題,Search Rotated Sorted Arrayhttp://blog.csdn.net/u013127687/article/details/50662421
需要考慮的特殊情況:Rotated 位置在0或者末尾,這樣這個數組仍是排序的。
代碼:
public class Solution {
public int findMin(int[] nums) {
int left=0;
int right = nums.length-1;
while(left<right){
if(left+1==right)
return nums[left]<nums[right]?nums[left]:nums[right];
int mid = left+((right-left)>>1);
if(nums[mid]<nums[mid-1])
return nums[mid];
if(nums[mid]>nums[right]){
left = mid +1;
}else{
right = mid -1;
}
}
return nums[left];
}
}