牛客网-剑指offer[编程题]二维数组中的查找 js详解

牛客网-剑指offer[编程题]二维数组中的查找 js详解_第1张图片
最简单的:双层循环暴力解法

不考虑二维数组的大小顺序,直接全部循环对比

function Find(target, array)
{
 
 for(var i=0;i<array.length;i++){
            for(var j=0;j<array[0].length;j++){
                if(array[i][j] == target){
                    return true;
                }
            }
        
        return false;
}

比较好的:根据二维数组大小分情况讨论的解法
这里采用以二维数组左下角为起始点开始比较的方法
比较结果可能有:

1.起始点>目标
j(横坐标)向上移

target=2

2 1
3 4

因为3>2
所以上移,与2比较

2.起始点<目标
i(纵坐标)向右移
target=5

2 1
3 4

因为5>3
所以左移,与4比较

3.起始点=目标
返回true

详细代码如下:

function Find(target, array) {
    let rowNum = array.length;
    if (rowNum === 0) {
        return false;
    }
    let colNum = array[0].length;
    if (colNum === 0) {
        return false;
    }
  
      let  i = 0,j = array[0].length - 1;
    while (i < rowNum && j >= 0) {
        if (array[i][j] === target) {
            return true;
        }
        if (array[i][j] > target) {
            j--;
        }
        if (array[i][j] < target){
            i++;
        }
    }
  
    return false;
}

你可能感兴趣的:(牛客-剑指offer)