LeetCode60 - 单词搜索
📝 题目描述
题目链接:单词搜索
给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。
单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。
示例:
示例 1:
1 | 输入:board = [['A','B','C','E'],['S','F','C','S'],['A','D','E','E']], word = "ABCCED" |
示例 2:
1 | 输入:board = [['A','B','C','E'],['S','F','C','S'],['A','D','E','E']], word = "SEE" |
示例 3:
1 | 输入:board = [['A','B','C','E'],['S','F','C','S'],['A','D','E','E']], word = "ABCB" |
提示:
m == board.lengthn = board[i].length1 <= m, n <= 61 <= word.length <= 15board 和 word 仅由大小写英文字母组成
💡 解题思路
方法一:回溯
很经典的回溯题目。
从任意一个格子开始探索,然后如果匹配字母成功,就递归继续探索。
如果在递归时发现单词的字母编号和单词长度相等,就返回 true。
值得注意的是,由于题目要求我们不能重复使用一个格子,所以这里要设置一个 visited 数组,因此如果匹配失败,记得将数组复原。
🔧 代码实现
1、回溯
1 | class Solution { |
📊 复杂度分析
1、回溯
- 时间复杂度:
- 空间复杂度:
🎯 总结
- 核心思想:
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 很多时候不懂事!