[剑指offer]旋转数组的最小数字
思路:
数组实际是两组有序序列,先用两个指针分别指向头和尾,如果左大于右,说明较大的数列在左边,用middle指向中间的值,如果中间值大于left,就将left设为中间值,如果中间值小于right,就将right设为中间值,最后中间值即为最小值
实现:
import java.util.ArrayList;
import java.util.*;
public class Solution {
public int minNumberInRotateArray(int [] array) {
if(array.length==0)return 0;
int left=0;
int right=array.length-1;
int middle=-1;
while(array[left]>=array[right]){
if(right-left==1){
middle=right;
break;
}
middle=left+(right-left)/2;
if(array[middle]>=array[left]){
left=middle;
}
if(array[middle]<=array[right]){
right=middle;
}
}
return array[middle];
}
}