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);
        }
    }

     方法三:递归

    待写

    若有恒,何必三更起五更眠;最无益,莫过一日曝十日寒。
  • 相关阅读:
    ElasticSearch调优问题
    Ceph源码解析:概念
    Ceph神坑系列
    Mac下VirtualBox共享文件夹设置
    API教程
    设计师最常用网站汇总
    从码农到大神,有多少经验值得借鉴?
    登录注册 页面
    NET面试题 (四)
    Sqlserver面试题
  • 原文地址:https://www.cnblogs.com/sjbin/p/14467669.html
Copyright © 2011-2022 走看看