题解 | #矩阵中的路径#

矩阵中的路径

https://www.nowcoder.com/practice/2a49359695a544b8939c77358d29b7e6

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param matrix char字符型二维数组 
 * @param word string字符串 
 * @return bool布尔型
 */
export function hasPath(matrix: string[][], word: string): boolean {
    // write code here
    const array = word
    for(let i = 0;i < matrix.length;i++){
        for(let j = 0;j < matrix[0].length;j++){
            //进行dfs来进行查询是否和目标路径相等,以其实元素为起点来进行查询
            if(dfs(matrix,array,i,j,0))return true
        }
    }
    return false
}
const dfs = (matrix:string[][],word:string,i:number,j:number,k:number)=>{
    //判断是否过界
    if(i >= matrix.length || i < 0 || j >= matrix[0].length ||j < 0 ||matrix[i][j] !== word[k])return false
    //当这个k值和word的长度一样长的时候说明全部匹配成功
    if(k === word.length - 1)return true
    //标记为已经访问过了
    matrix[i][j] = '#'
    //然后进行上左下右来进行查询
    const res = dfs(matrix,word,i-1,j,k+1) || dfs(matrix,word,i,j-1,k+1) ||dfs(matrix,word,i+1,j,k+1) || dfs(matrix,word,i,j+1,k+1)
    //回退到当前元素
    matrix[i][j] = word[k]
    return res
}

全部评论

相关推荐

joecii:如果没有工资,那可能没有工资是这家公司最小的问题了
找实习记录
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务