当前位置:网站首页>leetcode: 212. Word Search II
leetcode: 212. Word Search II
2022-08-04 14:36:00 【OceanStar study notes】
题目来源
题目描述


题目解析
前缀和 + DFS
注意:
- 可能出现: hf、 hfks(易错点)
class Solution {
struct TrieNode{
int size; // 可能出现不止一次
std::string path;
std::vector<TrieNode *> children;
TrieNode() : size(0), children(26, NULL){
}
};
void add(TrieNode *root, std::string &word){
TrieNode *node = root;
for(char ch : word){
int idx = ch - 'a';
if(node->children[idx] == nullptr){
node->children[idx] = new TrieNode();
}
node = node->children[idx];
}
node->size ++;
node->path = word;
}
std::set<std::string> set;
bool process(vector<vector<char>>& board, int i, int j, TrieNode *node){
int N = board.size(), M = board[0].size();
if(i < 0 || j < 0 || i == N || j == M || board[i][j] == 0 || node->children[ board[i][j] - 'a'] == nullptr){
return false;
}
int idx = board[i][j] - 'a';
node = node->children[idx];
if(node->size > 0){
node->size--; // 易错点......
set.emplace(node->path);
} //可能还没有结束,不能提前返回
board[i][j] = 0;
bool ans = false;
if(process(board, i + 1, j, node)
|| process(board, i - 1, j, node)
|| process(board, i, j + 1, node)
|| process(board, i, j - 1, node)){
ans = true;
}
board[i][j] = idx + 'a';
return ans;
}
public:
vector<string> findWords(vector<vector<char>>& board, vector<string>& words) {
TrieNode *root = new TrieNode();
for(auto w : words){
add(root, w);
}
for (int i = 0; i < board.size(); ++i) {
for (int j = 0; j < board[i].size(); ++j) {
TrieNode *node = root;
process(board, i, j, node);
}
}
return std::vector<std::string> (set.begin(), set.end());
}
};
边栏推荐
猜你喜欢
随机推荐
License server system does not support this version of this feature
考研上岸又转行软件测试,从5k到13k完美逆袭,杭州校区小哥哥拒绝平庸终圆梦!
centos7安装mysql急速版
期货开户之前要谈好最低手续费和交返
token 过期后,如何自动续期?
代码随想录笔记_动态规划_1049最后一块石头的重量II
RS|哨兵二号(.SAFE格式)转tif格式
Technology sharing | Mini program realizes audio and video calls
【剑指offer33】二叉搜索树的后序遍历序列
《中国综合算力指数》《中国算力白皮书》《中国存力白皮书》《中国运力白皮书》在首届算力大会上重磅发出
Basic Introduction for PLSQL
metaRTC5.0新版本支持mbedtls(PolarSSL)
【Web技术】1401- 图解 Canvas 入门
Centos7 install mysql version rapidly
开发者独立搭建一个跨模态搜索应用有多难?
1375. 二进制字符串前缀一致的次数-前序遍历法
Win10无法访问移动硬盘怎么解决
量化细胞内的信息流:机器学习时代下的研究进展
【模型部署与业务落地】基于量化芯片的损失分析
实际工作中的高级技术(训练加速、推理加速、深度学习自适应、对抗神经网络)









