js算法实现_二维数组中的查找

摘要:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数

题目:

在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。   


分析:

数组中任意找一个数,它的左边都小于它,它的下边都大于它。如果要找的数(target)大于这个数,那就向下找;小于这个数就向左找。那么我们应该取哪个数与target做比较呢?首先我们先想到是数组四个角的数,第一个数和最后一个数都不行(因为他们右下或左上与它们的关系是一样的,要么都大于它,要么都小于它,这样我们没法做上面的判断);所以我们可以取右上角或者左下角的数开始判断,下面就是代码: 


方法1:选取右上角的数为初始判断点 

function Find(target, array)
{
    // write code here
    var row=array.length,
        col=array[0].length,
        i=0,
        j=col-1;
    while(i<row&&j>=0){
        if(array[i][j]>target){
            j--;
            continue;
        }else if(array[i][j]<target){
            i++;
            continue;
        }else{
            return true;
        }
        return false;
    }
}


方法二:选取左下角的数为初始判断点

function Find(target, array)
{
    // write code here
    var row=array.length,
        col=array[0].length,
        i=row-1,
        j=0;
    while(i>=0&&j<col){
        if(array[i][j]>target){
            i--;
            continue;
        }else if(array[i][j]<target){
            j++;
            continue;
        }else{
            return true;
        }
        return false;
    }
}


本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://shenqiku.cn/article/FLY_1111