旋转数组的最小数字

来源:互联网 发布:希尔伯特矩阵的特征值 编辑:程序博客网 时间:2024/06/05 09:25
时间限制:3秒空间限制:32768K热度指数:162501
本题知识点:查找



算法知识视频讲解

题目描述

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。
  • 笔记
  • 收藏
  • 纠错

二分

 public static int minNumberInRotateArray(int [] array) {            if(array.length==0)                return 0;            int l=0;            int r=array.length-1;            int m = (l+r)/2;            while(true){                if(array[m]==array[l]){                     if(r-l==1){                            m=array[l]<array[r] ?l:r;                            break;                        }                    l++;                    m  = (l+r)/2;                    continue;                }                if(array[m]>array[l]){                    l=m;                }else if(array[m]<array[l]){                    r=m;                }else if(r-l==1){                    m=array[l]<array[r] ?l:r;                    break;                }                m  = (l+r)/2;            }        System.out.println(array[m]);           return array[m];      }