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.
- public class Solution {
- public int findMin(int[] nums) {
- if(nums.length==0) return 0;
- int start = 0;
- int end = nums.length-1;
- int mid = (start+end)/2;
- int min = 1<<100;
- while(start<end){
- if(nums[mid]>nums[end]){
- start = mid+1;
- mid = (start+end)/2;
- }else if(nums[mid]<nums[end]){
- end = mid;
- mid = (start+end)/2;
- }else{
- for(int i=start;i<=end;i++){
- if(nums[i]<min) min = nums[i];
- }
- return min;
- }
- }
- return nums[start];
- }
- }
原文链接http://blog.csdn.net/crazy__chen/article/details/46573247