题解 | #矩阵中的路径#
矩阵中的路径
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