JavaScript——旋转数组的最小数字

news/2024/7/19 14:35:01 标签: js, 旋转数组, 最小值

题目描述

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

function minNumberInRotateArray(rotateArray)
{
    //方法一:暴力遍历
    /*
    var res;
    var len=rotateArray.length;
    if(len==0){
        res=0;
    }else{
        res=rotateArray[0];
        for(var i=1;i<len;i++){
            if(rotateArray[i]<res){
                res=rotateArray[i];
            }
        }
    }
    return res;
    */
    
    //方法二:调用Math.min方法
    //Math.min 参数里面不支持数组Math.min([param1,param2]);但它支持Math.min(param1,param2,…)
    if(rotateArray.length==0){
        return 0;
    }
    return Math.min.apply(null,rotateArray);
    //apply第一个参数给了一个null,是因为没有对象去调用这个方法,只需要用这个方法计算得到结果,所以直接传递了一个null过去
    //example
    /*
    function a(xx) {
        this.b = xx; 
	} 
	var o = {}; 
	a.apply(o, [5]); //a.apply(null, [5]);下面o.b结果就是undefined
	alert(a.b);    // undefined 
	alert(o.b);    // 5
    */
    
    //方法三:二分查找
    if (!rotateArray.length) return 0;
    var low = 0;
    var high = rotateArray.length - 1;
    while (low < high) {
        var mid = Math.floor((high + low) / 2); //45123
        if (rotateArray[mid] > rotateArray[high]) {
            low = mid + 1; //1
        } else if (rotateArray[mid] === rotateArray[high]) {
            high = high - 1;
        } else {
            high = mid; //451
        }
    }
    return rotateArray[low];
}

实现方法有上述三种,可以自行选择。第二种方法可以好好理解一下,有助于理解JavaScript函数的调用模式。


http://www.niftyadmin.cn/n/1426103.html

相关文章

jsp防sql注入

在JDBC应用中,如果你已经是稍有水平开发者,你就应该始终以PreparedStatement代替Statement.也就是说,在任何时候都不要使用Statement.基于以下的原因:一.代码的可读性和可维护性.虽然用PreparedStatement来代替Statement会使代码多出几行,但这样的代码无论从可读性还是可维护性…

JavaScript——菲波那切数列

题目描述 大家都知道斐波那契数列&#xff0c;现在要求输入一个整数n&#xff0c;请你输出斐波那契数列的第n项&#xff08;从0开始&#xff0c;第0项为0&#xff09;。 n<39 function Fibonacci(n) { //自己的方法/*if(n0) return 0;if(n1) return 1;var count1;var …

JavaScript——青蛙跳台阶

题目描述 一只青蛙一次可以跳上1级台阶&#xff0c;也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法&#xff08;先后次序不同算不同的结果&#xff09;。 function jumpFloor(number) {// write code here//自己先写几个&#xff0c;多少台阶几种跳法。属于找规律…

JavaScript——变态跳台阶

题目描述 一只青蛙一次可以跳上1级台阶&#xff0c;也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 function jumpFloorII(number) {// write code here//青蛙跳台阶的plus版&#xff0c;同样从一个台阶开始&#xff0c;手动计算有多少种跳…

找规律——矩形覆盖

题目描述 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形&#xff0c;总共有多少种方法&#xff1f; 对问题进行分析&#xff1a; 得出规律 &#xff1b; function rectCover(number) {// write code here//从n…

源码研究

程序采用自动安装程序&#xff0c;把所有CGI文件和HTML目录及其下面的文件上传到CGI-BIN目录下&#xff0c;并保持它的原结构&#xff0c;图片文件请不要放在CGI-BIN目录下&#xff0c;把cgi文件属性改为755&#xff0c;然后执行install.cgi首页调用代码&#xff1a;<script…

查询自己主机的IP地址和WWW服务的IP地址

例如要取得 www.126.com的IP String ipjava.net.InetAddress.getByName("www.126.com").toString(); //取得指定的web主机的IP 自已的ip. <%request.getRemoteAddr()%>

JavaScript——二进制中1的个数

题目描述 输入一个整数&#xff0c;输出该数二进制表示中1的个数。其中负数用补码表示。 function NumberOf1(n) {// write code here//自己的方法 当时考虑了各种整数转二进制数&#xff0c;二进制数转整数的方法。最后没做出来&#xff0c;对数组和字符串的操作有了更深一步…