zoukankan      html  css  js  c++  java
  • 旋转数组的最小数字

    原文地址:https://www.jianshu.com/p/23e5561a2641

    时间限制:3秒 空间限制:32768K

    题目描述

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

    我的代码

    class Solution {
    public:
        int minNumberInRotateArray(vector<int> rotateArray) {
            //最小值为在交界处的较小的值
            //如果元素全相同,那么需要使用遍历来查找最小值
            int arrSize=rotateArray.size();
            if(arrSize<1)
                return 0;
            int left=0,right=arrSize-1;
            while(left<right){
                if(right-left==1)
                    return rotateArray[right];
                int mid=(left+right)/2;
                if((rotateArray[left]==rotateArray[mid])&&
                   (rotateArray[right]==rotateArray[mid]))
                   return findMinNumber(rotateArray,left,right);
                if(rotateArray[left]<=rotateArray[mid])
                   left=mid;
                if(rotateArray[mid]<=rotateArray[right])
                   right=mid;
            }
            return 0;
        }
        int findMinNumber(vector<int> array, int start, int end){
            int res=array[start];
            for(int i=start+1;i<=end;i++)
                if(array[i]<res)
                    res=array[i];
            return res;
        }
                 
    };
    

    运行时间:28ms
    占用内存:608k

  • 相关阅读:
    判断微信浏览器
    文章迁移
    ECharts使用—折线图动态加载
    vue-cli入门
    gulp使用详解
    gulp使用入门
    Chrome扩展插件流程
    div界面元素生成图片
    xss攻击与防御
    bootstrap-table使用详解
  • 原文地址:https://www.cnblogs.com/cherrychenlee/p/10780881.html
Copyright © 2011-2022 走看看