zoukankan      html  css  js  c++  java
  • 牛客网刷题---非减排序的数组-旋转数组

    送给你我:无一事敢马虎,无一事敢懈怠,心存敬畏之心,不敢得意忘形!

    -----------------------------------------------------------------------------------------------

    牛客网刷题java

    题目描述

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

    解决思路

    非递减数组:就是递增数组,但是允许重复数值
    

    方法一:遍历

    复杂度:n

    import java.util.ArrayList;
    public class Solution {
        public int minNumberInRotateArray(int [] array) {
            int lengths = array.length ;
            if(lengths == 0){
                return 0;
            }
            if(lengths == 1) {
                return array[0];
            }
            int min = array[0];
            for(int i = 0;i < lengths ;i++ ){
                if(min > array[i]){
                    min = array[i];
                }
            }
            return min;
        }
    }

    方法二:二分查找

    复杂度:n/2

    import java.util.ArrayList;
    public class Solution {
        public int minNumberInRotateArray(int [] array) {
            if(array.length==0) return 0;
            if(array.length==1) return array[0];
            int a=array[0];
            int l=0,r=array.length-1,mid=(l+r)/2;
            while(l!=r){
                if(array[mid]>=a){l=mid+1;mid=(l+r)/2;}
                else if(array[mid]<a){r=mid;mid=(l+r)/2;}
            }
            return Math.min(array[l],a);
        }
    }

     方法三:递归

    待写

    若有恒,何必三更起五更眠;最无益,莫过一日曝十日寒。
  • 相关阅读:
    P4868 天天和不可描述
    天天寄快递
    iOS开发资源网站
    找图标的网址
    json解析网址
    屏幕适配
    加密 解密
    json解析网址
    IOS设计模式之三:MVC模式
    什么是Cocoa?什么是Xcode?什么是Framework?
  • 原文地址:https://www.cnblogs.com/sjbin/p/14467669.html
Copyright © 2011-2022 走看看