• 剑指Offer:旋转数组的最小数字【11】


    剑指Offer:旋转数组的最小数字【11】

    题目描述

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

    解题分析

    我们用两个坐标,Left,Right分别表示左右两个递增序列的下标,刚开始L为0,R为4;

    当Arr[Mid]>Arr[Left],可以说明,Mid及左边构成左递增序列,也就是Mid是左递增序列的一个值。

    当Arr[Mid]<Arr[Right],可以说明,最小值为Mid或Mid的坐标的取值;

    当Right-Left=1的时候,L已经是左递增序列的最右值,R已经是右递增序列的最左值,最小的当然为Arr[Right];

      

    Java代码

    package arr;
    
    import java.util.Scanner;
    
    public class RotateArrFindMinNum {
    
        public static int minNumberInRotateArray(int ... array) {
            int left = 0;
            int right =array.length-1;
            int mid = 0;
            while (array[left]>=array[right])
            {
                if(right-left==1)
                {mid=right;
                break;}
                mid = left+(right-left)/2;
                if(array[mid]>=array[left])
                    left=mid;
                if(array[mid]<=array[right])
                    right=mid;
            }
            return array[mid];
        }
    
        public static void main(String[] args) {
            System.out.println(minNumberInRotateArray(8,9,1,2,3,4));
        }
    }
  • 相关阅读:
    封装cookie
    敏感词过滤
    面向对象改成选项卡
    正则表达式
    cookie
    DOM
    系统对象
    cookie记录用户名
    6个原则
    23中设计模式
  • 原文地址:https://www.cnblogs.com/MrSaver/p/9206362.html
Copyright © 2020-2023  润新知