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

九江市做网站的公司seo实战

九江市做网站的公司,seo实战,建设工业网站,做pc端网站方案典型Trie问题,首先根据sentences和times建树。 然后由于input是一个个char输入的,我们只需每次根据输入的字符往下走即可。然后dfs该节点得到所有以此为前缀的字符串,然后根据题目要求排序取出最大的三个即可。 如果输入是#,我们要…

典型Trie问题,首先根据sentences和times建树。

然后由于input是一个个char输入的,我们只需每次根据输入的字符往下走即可。然后dfs该节点得到所有以此为前缀的字符串,然后根据题目要求排序取出最大的三个即可。

如果输入是'#',我们要把迄今的input加到Trie Tree里。我实现的时候每次 input(char ch) 都会走到对应节点,如果没有节点就新建 (反正dfs新建的节点得到的也是空数组)。这样的好处是遇到'#'时直接把当前的 cur 节点标记一下即可,不用再调用一遍 insertword。

struct TrieNode{string word;int time;vector<TrieNode *> next;TrieNode():word(""),time(0),next(27,NULL){} // ' ' is of index 26
};class AutocompleteSystem {
private:TrieNode *root;TrieNode *cur;string cur_input;void insertword(string str, int time){TrieNode *p=root;for (char ch:str){int index=(ch==' '?26:ch-'a');if (p->next[index]==NULL) p->next[index] = new TrieNode();p = p->next[index];}p->word = str;p->time = time;}void dfs(TrieNode *root, vector<pair<int,string>> &startwith){if (root==NULL) return;if (root->word!="")startwith.push_back({root->time,root->word});for (int i=0;i<=26;++i){dfs(root->next[i],startwith);}}public:AutocompleteSystem(vector<string>& sentences, vector<int>& times) {root = new TrieNode();cur = root; cur_input = "";for (int i=0;i<sentences.size();++i){string sent=sentences[i]; int time=times[i];insertword(sent,time);}}vector<string> input(char ch) {vector<string> res;if (ch=='#'){cur->word=cur_input; ++cur->time; // insert typed inputcur=root; cur_input=""; // resetreturn res;}cur_input += ch;int index=(ch==' '?26:ch-'a');if (cur->next[index]==NULL) // create new node, since input will be addedcur->next[index] = new TrieNode();cur = cur->next[index];vector<pair<int,string>> startwith; // <time,string> 
        dfs(cur,startwith);sort(startwith.begin(),startwith.end(),[](const pair<int,string> &a, const pair<int,string> &b){if (a.first==b.first) return a.second<b.second;return a.first>b.first;});int n=startwith.size();for (int i=0;i<min(n,3);++i)res.push_back(startwith[i].second);return res;}
};/*** Your AutocompleteSystem object will be instantiated and called as such:* AutocompleteSystem* obj = new AutocompleteSystem(sentences, times);* vector<string> param_1 = obj->input(c);*/

时间复杂度:

构造函数:所有sentence长度的和。

input:dfs和sort,dfs时间为O(size of tree rooted at cur),sort时间O(mlogm),m为候选vector startwith的长度。

转载于:https://www.cnblogs.com/hankunyan/p/11374991.html

http://www.lbrq.cn/news/2728891.html

相关文章:

  • 怎么去掉wordpress首页关注我们厦门seo怎么做
  • 做什网站推广真实有效全渠道营销的概念
  • 做网站找哪个好googleseo排名公司
  • 欧美一级a做爰片免费网站网站排名靠前方法
  • 运城建设银行网站点千度seo
  • 深圳燃气公司官网seo宣传网站
  • 学校html网站模板代码深圳网络营销策划
  • 武昌网站建设公司软文推广案例大全
  • wordpress不用ftp下载文件网络优化工资一般多少
  • 找做金融的网站广告营销的经典案例
  • 家装公司加盟网络舆情优化公司
  • 近期军事新闻热点事件成都seo优化排名推广
  • 合肥网站建设多少钱网址大全下载到桌面
  • 请人建网站应注意什么软文推广代表平台
  • 动态网站开发日志百度竞价sem入门教程
  • 做的网站怎么申请软件著作权专业seo外包
  • 自己做网站如何赚钱吗百度提问登陆入口
  • 做网站和推广新闻发布系统
  • html网站用什么空间百度网络科技有限公司
  • 河南双师培训网站百度指数数据分析报告
  • 做网站的市场怎么样抖音seo关键词优化怎么做
  • 网站开发 需求说明书企业查询网
  • 深圳分销网站设计哪家好网络营销推广活动有哪些
  • 网站建设经验做法和取得的成效友情链接如何添加
  • 北京工程工程建设交易信息网站长尾词seo排名优化
  • 买汽车最好的网站建设东莞做网页建站公司
  • 事业单位网站建设工作方案域名注册查询阿里云
  • 天津城市基础设施建设投资集团有限公司网站我想在百度上做广告怎么做
  • 龙口有没有做网站的网站接广告
  • 景区网站的作用线上营销推广方案
  • 4.6 Vue 3 中的模板引用 (Template Refs)
  • [Linux] Linux交换空间管理 Linux系统启动原理
  • 开发一款多商户电商APP要多久?功能拆解与源码技术落地方案
  • Java-JVM是什么JVM的类加载机制
  • 20道Vue框架相关前端面试题及答案
  • Linux的进程信号