二维数组中的查找

题目描述

题目地址:http://mtw.so/6jl10Z
题目要求:

在一个二维数组array中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
[
[1,2,8,9],
[2,4,9,12],
[4,7,10,13],
[6,8,11,15]
]
给定 target = 7,返回 true。
给定 target = 3,返回 false。

解题思路

  1. 拿到题,首先我想到的是for循环遍历,一个一个进行判断,但是这样效率不高,所以我们可以从右上角遍历,如果target比当前大,向下一行,小,向左一列 ,虽然也用for循环,但是效率更高
  2. 定义两个变量,记录数组的长度和数组第一个元素的长度
  3. 定义x是数组第一个元素的最后的一个元素
  4. continue的作用:当只有一层时,满足if条件执行y++变为1,下一个if判断会报错,所以要中断本次循环

解题代码

function Find(target, array)
{
    let Y = array.length
    let X = array[0].length
    for(let x = array[0].length-1 ,y=0;x>=0&&y<Y;){
        if(target>array[y][x]){y++;continue}
        if(target<array[y][x]){x--}
        else{return true}
    }
    return false

}
module.exports = {
    Find : Find
};
posted @ 2022-08-03 22:00  fionna  阅读(24)  评论(0编辑  收藏  举报