找出递增数组旋转后的最小值?
public int findMin(int[] a,int l,int r){
if(l == r){
return a[l];
}
int mid = (l+r)/2;
if(a[mid] > a[r]){
return findMin(a,mid+1,r);
}else{
return findMin(a,l,mid);
}
}
public int minNumberInRotateArray(int [] array) {
if(array == null){
throw new RuntimeException("array is not existed");
}
if(array.length == 0){
return 0;
}
return findMin(array,0,array.length-1);
}
//迭代
public int findMin(int [] array) {
int low = 0 ;
int high = array.length - 1;
while(low < high){
int mid = (low + high) / 2;
if(array[mid] > array[high]){
low = mid + 1;
}else{
high = mid;
}
}
return array[low];
}
近期评论