当前位置: 首页 > news >正文

网站为什么需要备案最新一周新闻

网站为什么需要备案,最新一周新闻,台州百度推广优化,秦皇岛网站制作费用给定一个 m x n 二维字符网格 board 和一个单词(字符串)列表 words, 返回所有二维网格上的单词 。 单词必须按照字母顺序,通过 相邻的单元格 内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一…

给定一个 m x n 二维字符网格 board 和一个单词(字符串)列表 words, 返回所有二维网格上的单词 。

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

这里我们需要在字符表中查找words中的单词,如果我们暴力搜索,然后再去检验的化,效率很低,并且每个点都需要搜索所以行不通
这里我们直接建立words的Trie 然后dfs 建立的Trie 大大减少了dfs的范围

Trie节点Trienode 

这里使用map<char,Tirenode*>内存确实效率更好

struct Tirenode
{unordered_map<char,Tirenode*> next;string s="";                       //标记单词 
};

 Trie节点的添加

 void insert_(string& word){                auto node=this->root;     //遍历节点for(auto c:word){if(!node->next.count(c)) node->next[c]=new Tirenode();  node=node->next[c];}node->s=word; //标记单词}

dfs查找

 我们已经将words的单词假如到了Trie结构中
 所以我们只要dfs board中的字符看是否能搜索到temp不为空字符的情况即可
 去重的话如果我们搜索到了单词temp则将它置空,表示我们已经push_back过了 

 void dfs(point p,vector<vector<char>>& board,Tirenode* temp){auto [x,y]=p;        //结构化绑定char c=board[x][y];  //记录当前字母if(!temp->next.count(c)) return;  //搜索到尾了 则退出递归//搜索到单词if(temp->next[c]->s!="") {dp.push_back(temp->next[c]->s);temp->next[c]->s="";};        //标记当前单词表示已经搜索board[x][y]='#';//dfs搜索for(int i=0;i<4;i++){int nx=x+a[i];int ny=y+b[i];if(nx>=0&&nx<board.size()&&ny>=0&&ny<board[0].size()&&board[nx][ny]!='#'){dfs({nx,ny},board,temp->next[c]);}}//回溯board[x][y]=c;}

完整代码: 

class Solution {
public:typedef pair<int,int> point;vector<string> dp;int a[4]={0,0,1,-1};int b[4]={1,-1,0,0};int max_=0;struct Tirenode{unordered_map<char,Tirenode*> next;string s="";};Tirenode* root=new Tirenode();void insert_(string& word){auto node=this->root;for(auto c:word){if(!node->next.count(c)) node->next[c]=new Tirenode();node=node->next[c];}node->s=word;}void dfs(point p,vector<vector<char>>& board,Tirenode* temp){auto [x,y]=p;char c=board[x][y];if(!temp->next.count(c)) return;if(temp->next[c]->s!="") {dp.push_back(temp->next[c]->s);temp->next[c]->s="";};board[x][y]='#';for(int i=0;i<4;i++){int nx=x+a[i];int ny=y+b[i];if(nx>=0&&nx<board.size()&&ny>=0&&ny<board[0].size()&&board[nx][ny]!='#'){dfs({nx,ny},board,temp->next[c]);}}board[x][y]=c;}vector<string> findWords(vector<vector<char>>& board, vector<string>& words) {for(auto s:words)  insert_(s);  int m=board.size();int n=board[0].size();for(int i=0;i<m;i++){for(int j=0;j<n;j++){dfs({i,j},board,this->root);}}return dp;}
};

http://www.shuangfujiaoyu.com/news/28906.html

相关文章:

  • 专业的网站设计app推广多少钱一单
  • 做模板网站的利与弊临沂做网络优化的公司
  • 找货源的网上平台有哪些临沂网站建设优化
  • 校园微网站建设方案投广告的平台有哪些
  • 国家网站建设的相关规定青岛seo网络推广
  • 免费发布信息网站大全下载安装免费的网页入口
  • 沧州市东光建设局 网站seo页面排名优化
  • 鸿运通网站建设怎么样百度seo排名优化助手
  • 小型企业网站建站微商怎么做推广加好友
  • 1688网站怎么做分销百度指数可以查询到哪些内容
  • 千图网免费素材图库官网青岛关键词优化报价
  • 招聘网站开发兼职咸宁网站seo
  • 大连做网站孙晓龙项目外包平台
  • 怎么做公司宣传网站免费的舆情网站app
  • b2b电子商务网站建设怎么免费创建自己的网站
  • 网站设计与建设论文开题报告湖南企业seo优化首选
  • 手把手教你做网站 怎么注册域名网络营销具有什么特点
  • 大气集团企业网站源码广州seo网站管理
  • 兴县做网站的公司短链接在线生成免费
  • 洛阳网站公司哪家好如何自己开发一个网站
  • 零食网站源码网络营销的常用方法
  • 品牌策划服务seo优化方案策划书
  • 如何自己弄个免费网站关键词优化计划
  • 网站建设硬件上海关键词优化推荐
  • 个人中心网页行者seo无敌
  • 什么网站可以做问卷调查百度指数网站
  • 淘客网站如何做推广北京seo服务行者
  • 宜兴做网站的公司百度广告代理
  • 12333公共招聘网搜索引擎优化期末考试答案
  • 中国空间站组合体下拉关键词排名