• 求旋转数组的最小数字(剑指offer)


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

    //输入一个非递减排序的数组的一个旋转  说明这个非递减数组可能是递增数组如[1,2,3,4,5]这个数组的旋转数组是[3,4,5,1,2]  也可能是这样的[1,2,2,2,2]这个数组的旋转数组是[2,2,2,1,2] 总之 这个旋转结果中间值的左边部分和右边部分都是非递减的  而且左边部分比右边部分要大于或者等于

    function minNumberInRotateArray(rotateArray)
    {
      if(rotateArray.length===0){
      return 0;
    }
    var startIndex=0;
    var endIndex=rotateArray.length-1;
    var midIndex;
    while(rotateArray[endIndex]<=rotateArray[startIndex]){//循环的控制条件  即旋转数组的第一个元素要大于等于旋转数组的最后一个元素
      if(endIndex-startIndex==1){//当数组中只有两个元素的时候,最后一个元素要小一些  赋值给midIndex输出
        midIndex=endIndex;
        break;
      }
      midIndex=Math.floor((endIndex+startIndex)/2);//取中间的索引值
      if(rotateArray[midIndex]==rotateArray[endIndex]&&rotateArray[midIndex]==rotateArray[startIndex]){//现在是[2,2,2,1,2]这种情况  通过循环得到最小元素
        var result=rotateArray[startIndex];//把第一个值设置为最小元素
          for(var i=0;i<rotateArray.length;i++){
            if(result>rotateArray[startIndex++]){//把第一个值与后面的元素比较  由于这个数组的特殊性 左边部分的第一个值是左边的最小元素  右边部分的第一个值是右边的最小元素  所以可以这样通过一层循环 比较
              result=rotateArray[startIndex++]
            }
          }
        return result;
      }
    if(rotateArray[midIndex]>=rotateArray[startIndex]){//[3,4,5,1,2]这种情况  将中间的值作为第一个值  再来循环比较  
      startIndex=midIndex;
    }else if(rotateArray[midIndex]<=rotateArray[startIndex]){//[2,2,1,2,2] 原数组是[1,2,2,2,2]
      endIndex=midIndex
    }

    }
      return rotateArray[midIndex]
    }

  • 相关阅读:
    理解mipi协议【转】
    Using KernelShark to analyze the real-time scheduler【转】
    内核栈溢出【转】
    检测内核的堆栈溢出【转】
    gcc 编译 + 选项【转】
    service mysqld start 报错:service mysqld start 报错 090517 13:34:15 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it. 090Can't open the mysql.plugin table. Please run mysql
    【推荐】MySQL Cluster报错及解决方法(不断更新中)
    MySQL Cluster 配置文件(config.ini)详解
    关于MySQL Cluster集群NoOfReplicas参数问题
    通过PHP current()函数获取未知字符键名数组第一个元素的值
  • 原文地址:https://www.cnblogs.com/cmy1996/p/9116372.html
Copyright © 2020-2023  润新知