力扣-79-单词搜索
刚做了前缀树,前缀树可以用来在一维空间上做单词搜索,而这里是二维,本质上是查找一个路径,像是DFS
好吧其实是回溯
class Solution { public: bool exist(vector<vector<char>>& board, string word) { int m = board.size(); int n = board[0].size(); for (int i = 0; i < m; i++) for (int j = 0; j < n; j++) if (check(board,word,i,j,0)) return true; return false; } bool check(vector<vector<char>>& board, string word, int i,int j,int index) { if (board[i][j] == word[index]) { if (index == word.size() - 1) return true; // 这里只要是一个原数组不会出现的字符就行 board[i][j] = '#'; if (i - 1 >= 0) if (check(board, word, i-1, j, index+1)) return true; if (i + 1 < board.size()) if (check(board, word, i + 1, j, index+1)) return true; if (j - 1 >= 0) if (check(board, word, i, j-1, index+1)) return true; if (j + 1 < board[0].size()) if (check(board, word, i, j+1, index+1)) return true; board[i][j] = word[index]; } return false; } };
第一版AC代码,然后就是考虑优化和剪枝
…好像没啥好改的,每一步都很清晰
本文作者:YaosGHC
本文链接:https://www.cnblogs.com/yaocy/p/16977870.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步