剑指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;
    }

 

 

 

posted @ 2019-04-11 16:42  月半榨菜  阅读(76)  评论(0编辑  收藏  举报