首页 > 编程语言 > 详细

旋转数组的最小元素

时间:2020-02-12 19:10:00      阅读:58      评论:0      收藏:0      [点我收藏+]
  • 旋转数组的最小元素(折半查找)
    把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。
    输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。
    例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。
    NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。
import java.util.ArrayList;
public class Solution {
    public int minNumberInRotateArray(int [] array) {
    if(null == array || array.length == 0){
            return 0;
        }

        //起始坐标
        int len = array.length;
        int left = 0;
        int rigth = len - 1;
        int mid = (left + rigth)/2;
        if(array[left] == array[rigth] && array[left] == array[mid]){
            //顺序查找
            return findMin(array);
        }

        while((rigth-left) != 1){
            mid = left + (rigth - mid)/2;
            // (1): 若中间元素<第一个元素,则最小元素在中间元素的左侧←,
            if(array[mid]<array[left]){
               rigth = mid;
            }else{
                left = mid;
            }
        }
        return array[rigth];
    }
    
    public int findMin(int [] array){
        int min = array[0];
        for(int i=1;i<array.length;i++){
            if(array[i]<min){
                min = array[i];
            }
        }
        return min;
    }
}

旋转数组的最小元素

原文:https://www.cnblogs.com/VVII/p/12300213.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!