题解 | #矩阵中的路径#
矩阵中的路径
https://www.nowcoder.com/practice/2a49359695a544b8939c77358d29b7e6
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param matrix char字符型二维数组
* @param word string字符串
* @return bool布尔型
*/
var height = 0;
var width = 0;
var res = false;
function getWay(matrix, word, xS, yS) {
matrix[yS][xS] = 0;
console.log(matrix, word[0], xS, yS);
if (word.length == 0) {
res = true;
return;
}
//上
if (yS != 0 && matrix[yS - 1][xS] == word[0]) {
getWay(JSON.parse(JSON.stringify(matrix)), word.slice(1), xS, yS - 1);
}
//下
if (yS != height && matrix[yS + 1][xS] == word[0]) {
getWay(JSON.parse(JSON.stringify(matrix)), word.slice(1), xS, yS + 1);
}
//右
if (xS != width && matrix[yS][xS + 1] == word[0]) {
getWay(JSON.parse(JSON.stringify(matrix)), word.slice(1), xS + 1, yS);
}
//左
if (xS != 0 && matrix[yS][xS - 1] == word[0]) {
getWay(JSON.parse(JSON.stringify(matrix)), word.slice(1), xS - 1, yS);
}
}
function hasPath(matrix, word) {
height = matrix.length - 1;
width = matrix[0].length - 1;
for (let i = 0; i <= height; i++) {
for (let j = 0; j <= width; j++) {
if (matrix[i][j] == word[0]) {
getWay(JSON.parse(JSON.stringify(matrix)), word.slice(1), j, i);
}
}
}
return res;
}
module.exports = {
hasPath: hasPath,
};
代码很丑,但是能用。得注意在js中数组是引用类型变量,实参传递用深拷贝,不然会gg

