• 剑指 Offer 12. 矩阵中的路径(中等)


    通过率 45.3%

    题目链接

    题目描述:

    给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。

    单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。

    例如,在下面的 3×4 的矩阵中包含单词 "ABCCED"(单词中的字母已标出)。

    示例 1:

    输入:board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "ABCCED"
    输出:true

    示例 2:

    输入:board = [["a","b"],["c","d"]], word = "abcd"
    输出:false

    提示:

    1 <= board.length <= 200
    1 <= board[i].length <= 200
    board 和 word 仅由大小写英文字母组成

    思路:

    深搜

     1 /*JavaScript*/
     2 /**
     3  * @param {character[][]} board
     4  * @param {string} word
     5  * @return {boolean}
     6  */
     7 var dfs = function(board, n, m, i, j, word, k) {
     8     if(k === word.length) return true
     9     if(i < 0 || j < 0 || i >= n || j >= m || board[i][j] !== word[k]) return false
    10     board[i][j] = '*'
    11     const res = dfs(board, n, m, i-1, j, word, k+1) || dfs(board, n, m, i, j+1, word, k+1) || dfs(board, n, m, i+1, j, word, k+1) || dfs(board, n, m, i, j-1, word, k+1)
    12     board[i][j] = word[k]
    13     return res
    14 }
    15 
    16 var exist = function(board, word) {
    17     const n = board.length
    18     const m = board[0].length
    19     for(let i = 0; i < n; i++) {
    20         for(let j = 0; j < m; j++) {
    21             if(dfs(board, n, m, i, j, word, 0)) return true
    22         }
    23     }
    24     return false
    25 };
  • 相关阅读:
    Layui_2.x_上传插件使用
    Layui_1.0.9_分页实例_Java
    Jquery_如何扩展方法
    Linux_Crontab命令
    Linux_Centos7_设置MySql定时备份
    Linux_MySql_tar_安装(转)
    MySql_创建用户并赋予权限
    滚动条定位
    MySQL 存储过程创建表
    取两个时间差
  • 原文地址:https://www.cnblogs.com/wwqzbl/p/15206059.html
Copyright © 2020-2023  润新知