题解 | #矩阵中的路径#

矩阵中的路径

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

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务