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

烟台网站建设咨询服装设计有哪些网站

烟台网站建设咨询,服装设计有哪些网站,广州市住房和城乡建设局官方网站,wordpress缓存插件汉化破解版文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析:示例1为例,hit到达cog的路线不止一条,如何找到最短是关键。广度优先搜索是一圈…

文章目录

  • 一、题目
  • 二、解法
  • 三、完整代码

所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。

一、题目

在这里插入图片描述

二、解法

  思路分析:示例1为例,hit到达cog的路线不止一条,如何找到最短是关键。广度优先搜索是一圈一圈的搜索过程,一旦找到了结果,一定是最短的。本题也只需要最短转换序列的数目而不需要具体的序列,因此不用去关心下图中线是如何连在一起的。因此最终选择广搜,只要差一个字符说明序列之间是连接的。

  • 本题还是一个无向图,需要用到标记位,标记节点是否走过,否则会陷入死循环。为此我们引入一个unordered_map<string, int> visitMap类型的地图,记录word是否被访问过,key值为单词,value为beginWord到该单词的路径长度。
  • 集合是数组类型的,提前转成集合set类型,查找更快。

  根据单词的长度,每次替换其中一个单词,需要用到两个循环,一个循环选择单词中替换的字符位置,另一个用来选择26个字母中的其中一个。然后在单词集合中查找是否存在替换之后的新单词,如果找到将其加入visitMap中。如果新单词是endWord,那么直接放回path+1。path代表路径长度。

在这里插入图片描述

  程序如下

// 127、单词接龙-深度优先搜索
class Solution {
public:int ladderLength(string beginWord, string endWord, vector<string>& wordList) {unordered_set<string> wordSet(wordList.begin(), wordList.end());	// 转成uset类型,查找更快if (wordSet.find(endWord) == wordSet.end()) return 0;	// endWord没有在单词集合中出现,直接返回0unordered_map<string, int> visitMap;	// 记录word是否被访问过,key值为单词,value为beginWord到该单词的路径长度queue<string> que;		visitMap.insert(pair<string, int>(beginWord, 1));que.push(beginWord);while (!que.empty()) {string word = que.front();que.pop();int path = visitMap[word];	// 路径长度for (int i = 0; i < word.size(); i++) {string newWord = word;		// 用一个新单词替换word,每次置换一个字母for (int j = 0; j < 26; j++) {newWord[i] = j + 'a';if (newWord == endWord) return path + 1;	// 找到endif (wordSet.find(newWord) != wordSet.end() && visitMap.find(newWord) == visitMap.end()) {	// newWord出现在wordSet中,且没有访问过visitMap.insert(pair<string, int>(newWord, path + 1));que.push(newWord);}}}}return 0;}
};

复杂度分析:

  • 时间复杂度: O ( N × C ) O(N \times C) O(N×C),N为wordList长度,C为单词长度。字符串数组转化成umap字符串类型需要 O ( N ) O(N) O(N)。最坏情况下,遍历到wordList最后一个元素才会找到endWord,while循环中的一些操作(如visitMap插入元素和que队列插入、弹出元素复杂度)为 O ( N ) O(N) O(N)。两个for循环的复杂度为 O ( 26 × C ) O(26 \times C) O(26×C)。因此最终的复杂度为 O ( N × C ) O(N \times C) O(N×C)

  • 空间复杂度: O ( N × C ) O(N \times C) O(N×C)

三、完整代码

// 127、单词接龙-深度优先搜索
class Solution {
public:int ladderLength(string beginWord, string endWord, vector<string>& wordList) {unordered_set<string> wordSet(wordList.begin(), wordList.end());	// 转成uset类型,查找更快if (wordSet.find(endWord) == wordSet.end()) return 0;	// endWord没有在单词集合中出现,直接返回0unordered_map<string, int> visitMap;	// 记录word是否被访问过,key值为单词,value为beginWord到该单词的路径长度queue<string> que;		visitMap.insert(pair<string, int>(beginWord, 1));que.push(beginWord);while (!que.empty()) {string word = que.front();que.pop();int path = visitMap[word];	// 路径长度for (int i = 0; i < word.size(); i++) {string newWord = word;		// 用一个新单词替换word,每次置换一个字母for (int j = 0; j < 26; j++) {newWord[i] = j + 'a';if (newWord == endWord) return path + 1;	// 找到endif (wordSet.find(newWord) != wordSet.end() && visitMap.find(newWord) == visitMap.end()) {	// newWord出现在wordSet中,且没有访问过visitMap.insert(pair<string, int>(newWord, path + 1));que.push(newWord);}}}}return 0;}
};

end

http://www.yayakq.cn/news/656375/

相关文章:

  • 科技网站新版网站上线上海网站设计开
  • 网站开发的功能需求文档中国电子商务研究中心
  • 湖南营销型网站建设团队wordpress设置成中文字体
  • 自助建站系统厂家望京SOHO网站建设
  • 网站建设 后期维护王者做网站
  • 网站设计详细设计中国互联网数据平台
  • 长春商城网站开发象山住房和城乡建设局网站
  • wordpress移动端导航太原整站优化
  • 局域网网站制作重庆装修公司排行榜一览表
  • 网站视频做栏目一般一期多钱大气的建筑公司名字
  • 鑫诺科技网站建设wordpress php函数大全
  • 怎样给网站做seo优化seo网站案例
  • 做淘宝的货源网站凡科建站电话咨询
  • 帮别人做网站赚钱6贵阳做网站 优帮云
  • 阿里云服务器做网站233小游戏网页入口
  • 怎么搭建自己的电影网站电力建设网站
  • 北京高端网站建设咸阳wordpress文章页调用作者
  • 企业免费网站推广公司手机建立一个免费网站
  • 网站设计注意事项昆明网站制作维护
  • 动漫网站开发需求分析做视频分享网站的参考书
  • 新网站做优化要准备什么不正规网站制作
  • 凡科建站怎么导出如何开始做网站
  • 自己做图片的网站吗用于做网站的软件
  • 如何做论坛网站 知乎女孩学电子商务专业好就业吗
  • 漂亮的网站维护页面国外网站 网速慢
  • 营销型网站平台建设如何推广网站运营
  • 怎么找人做动漫视频网站如何创建一个新网站
  • 2345中国最好的网址站义务 网站建设
  • 公司企业网站建设方案书网站被挂马 301
  • 城乡与住房建设部网站首页36氪国外做网站