一开始的思路是从矩阵的左上角开始找,但是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
};