寻找目标-二维数组

38 阅读1分钟

image.png

一开始的思路是从矩阵的左上角开始找,但是right和bottom都大于当前数字,这种情况马上想到的就是回溯法,先遍历右边分支,如果没找到就回溯,遍历下边分支。但是这种思路有问题,两条分支的情况都是大于当前数字,回溯其实和暴力遍历没啥关系了。 看到解题思路的时候发现是从左下角开始查找,这样两条分支就有一大一小,无需回溯来重新查找另一条分支。 代码如下:

var findTargetIn2DPlants = function (plants, target) {
  let i = plants.length - 1,
    j = 0;
  while (i >= 0 && j < plants[0].length) {
    let v = plants[i][j];
    if (v === target) {
      return true;
    } else if (v > target) {
        i--;
    } else {
        j++
    }
  }
  return false
};