资讯专栏INFORMATION COLUMN

【刷算法】二维数组中的查找

Worktile / 2921人阅读

摘要:题目描述在一个二维数组中每个一维数组的长度相同,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。分析例如二维数组,,如果按照常规的查找,从开始,那么,和都大于,接下来该怎么办呢这就陷入了一个无法进行下去的局面。

题目描述

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

分析

例如二维数组arr = [

[1,2,3,4],
[5,6,7,8],
[9,10,11,12]    

],target=7,如果按照常规的查找,从arr0开始,那么target>arr0,arr0和arr1都大于arr0,接下来该怎么办呢?这就陷入了一个无法进行下去的局面。

所以,要在一个数组中查找某target,则有办法确定一个唯一的方向,即下一步该向左还是向右、向上还是向下。

观察题目,二维数组的每一行都按照从左向右递增,每一列都按照从上到下递增,那么如果从二维数组的左下角开始,就可以保证向上的都是小的,向右的都是大的,过程就可以进行下去了。

代码实现
function Find(target, array)
{
    if(array === null)
        return false;
    var curRow = array.length-1;
    var curCol = 0;

    while(curRow >=0 && curCol < array[0].length){
        if(array[curRow][curCol] === target)
            return true;
        else if(array[curRow][curCol] > target)
            curRow--;
        else 
            curCol++
    }

    return false;
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/96278.html

相关文章

  • 【前端来LeetCode】两数之和与两数相加

    摘要:给定表,存在函数,对任意给定的关键字值,代入函数后若能得到包含该关键字的记录在表中的地址,则称表为哈希表,函数为哈希函数。而中的对象就是基于哈希表结构,所以我们构造一个对象即可,是当前遍历到的值,是其与目标值的差。 大部分玩前端的小伙伴,在算法上都相对要薄弱些,毕竟调样式、调兼容就够掉头发的了,哪还有多余的头发再去折腾。 确实在前端中需要使用到算法的地方是比较少,但若要往高级方向发展,...

    BLUE 评论0 收藏0
  • 每日一道算法题--二维数组中的查找--python

    摘要:题目描述代码思路思路一按行执行二分查找,只要该行的第一个元素小于目标,就对该行二分查找。思路二从数组的左下角开始查找,如果当前值小于目标,就向右,即如果当前值大于目标,就向上,即。【题目描述】 showImg(https://user-gold-cdn.xitu.io/2019/5/22/16addf094e0320ca); 【代码思路】 思路一:按行执行二分查找,只要该行的第一个元素小于目...

    番茄西红柿 评论0 收藏0
  • 每日一道算法题--二维数组中的查找--python

    摘要:题目描述代码思路思路一按行执行二分查找,只要该行的第一个元素小于目标,就对该行二分查找。思路二从数组的左下角开始查找,如果当前值小于目标,就向右,即如果当前值大于目标,就向上,即。【题目描述】 showImg(https://user-gold-cdn.xitu.io/2019/5/22/16addf094e0320ca); 【代码思路】 思路一:按行执行二分查找,只要该行的第一个元素小于目...

    luck 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<