剑指offer-旋转数组的最小数字
题目描述
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。
1 public int minNumberInRotateArray(int [] array) {//my 2 int result = 0; 3 if(array.length==1){ 4 result = array[0]; 5 } 6 for (int i = 1; i < array.length; i++) { 7 if(array[i-1] > array[i]){ 8 result=array[i]; 9 break; 10 } 11 } 12 return result; 13 }
二分
public int minNumberInRotateArray(int [] array) {//my int result = array[0]; int left = 0; int right =array.length -1; while(left<=right){ int mid = (left+right)/2; if(mid>0&&array[mid-1]>array[mid]){ result = array[mid]; break; } else if(array[mid]>array[0]){ left = mid+1; } else{ right =mid -1; } } return result; }