您的位置:首页 > Web前端

【剑指offer】旋转递增数组的最小数字

2016-09-03 22:25 423 查看
思路:利用二叉查找原理,定义mid ,before 和behind三个标签

array [mid]>array[before]时,before=mid;

array[mid]<array[behind]时,end=mid 

public class MinNumberInRoastedArray {
public static void main(String[] args){
int[] array={1,1,0,1};
int result=minNumberInRoastedArray(array);
System.out.println(result);

}

private static int minNumberInRoastedArray(int[] array) {
// TODO Auto-generated method stub
if(array==null||array.length==0)
throw new RuntimeException("invalid array");
int before=0;
int behind=array.length-1;
int result_idx=0;
if(array[before]<array[behind])
result_idx=before;
else if(array[before]>array[behind]){
int mid=(before+behind)/2;
while(before!=behind-1){
mid=(before+behind)/2;
if(array[mid]>array[before])
before=mid;
else if(array[mid]<array[behind]){
behind=mid;

}

}
result_idx=behind;
}
else if(array[before]==array[behind]){
if(array.length==1) result_idx=before;
else{
while(array[before]>=array[behind]){
before++;
}
result_idx=before;
}
}
return array[result_idx];
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: