import java.util.ArrayList;
public class Solution {
public int minNumberInRotateArray(int [] array) {
if(array.length==0) return 0;
int start = 0;
int end = array.length-1;
while(start <= end){
if(array[start] < array[end]){
return array[start];
}
int mid = (end+start)>>1 ;
if(array[start]==array[end] && array[start]==array[mid]){//有相同的元素
int ret = array[start];
for(int i=start+1;i<end;i++){
if(array[i]< ret){
ret = array[i];
}
}
return ret;
}else if(array[start] < array[mid]){
start=mid;
}else{
end--;
start++;
}
}
return array[start];
}
}我感觉这题很神奇 ....改着改着就过了

京公网安备 11010502036488号