import java.util.ArrayList;
public class Solution {
public int minNumberInRotateArray(int [] array) {
if(array.length==0)
return 0;
int left=0;
int right=array.length-1;
while(left<right){
int mid=left+(right-left)/2;
if(array[left]==array[mid]&&array[mid]==array[right])
return minNumber(array,left,right);
else if(array[mid]<array[right])//********见注释
right=mid;
else
left=mid+1;
}
return array[left];
}
public int minNumber(int[]nums,int l,int h){
for(int i=l;i<h;i++){
if(nums[i]>nums[i+1])
return nums[i+1];
}
return nums[l];
}
}
/*
这里也可以array[mid]==[right],虽然mid=right,此时左边因为前面的限制条件必然left>mid,
间断点在左边区间,但是因为找的是最小元素 所以在右边也没问题
但逻辑上应该是左边
*/