算法刷题:二维数组中的查找(js)

711 阅读1分钟

1、什么是二维数组

二维数组就是数组套数组,数组的每一元素都是数组。也称为矩阵。

const arr = [ 
    [1,2,3,4,5], 
    [1,2,3,4,5],
    [1,2,3,4,5], 
    [1,2,3,4,5],
    [1,2,3,4,5] 
]

2、初始化二维数组

const len = arr.length;
for(let i=0;i<len;i++){
    arr[i] = []
}

3、题解

题目:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
解法1:暴力循环法
var find = function(matrix, target) {
    if(matrix.length === 0)return false;
    let x = matrix.length;
    let y = matrix[0].length;
    for(let i=0;i<x;i++){
        for(let j=0;j<y;j++){
            if(matrix[i][j] === target){
                return true
            }
        }
    }
    return false;
};
解法2:从右上角开始比对
function find(target, arr){
    let x = arr.length;
    let y = arr[0].length;
    let i = 0,
        j = y-1;
    while(i<x&&j>=0){
        if(arr[i][j] === target)return true;
        else if(arr[i][j] < target) i+=1;
        else if(arr[i][j] > target) j-=1;
    }
    return false
}