126.单词接龙II
给定两个单词(beginWord 和 endWord)和一个字典 wordList,找出所有从 beginWord 到 endWord 的最短转换序列。转换需遵循如下规则:
- 每次转换只能改变一个字母。
- 转换过程中的中间单词必须是字典中的单词。
说明:
- 如果不存在这样的转换序列,返回一个空列表。
- 所有单词具有相同的长度。
- 所有单词只由小写字母组成。
- 字典中不存在重复的单词。
- 你可以假设 beginWord 和 endWord 是非空的,且二者不相同。
示例 1:
输入:
beginWord = "hit",
endWord = "cog",
wordList = ["hot","dot","dog","lot","log","cog"]输出:
[["hit","hot","dot","dog","cog"],["hit","hot","lot","log","cog"]
]
示例 2:
输入:
beginWord = "hit"
endWord = "cog"
wordList = ["hot","dot","dog","lot","log"]输出: []解释: endWord "cog" 不在字典中,所以不存在符合要求的转换序列。
class Solution {
public:
vector<vector<string>> findLadders(string beginWord, string endWord, vector<string>& wordList) {
vector<vector<string>> res;
unordered_set<string> dict(wordList.begin(), wordList.end());
vector<string> p{beginWord};
queue<vector<string>> paths;
paths.push(p);
int level = 1, minLevel = INT_MAX;
unordered_set<string> words;
while (!paths.empty()) {
auto t = paths.front(); paths.pop();
if (t.size() > level) {
for (string w : words) dict.erase(w);
words.clear();
level = t.size();
if (level > minLevel) break;
}
string last = t.back();
for (int i = 0; i < last.size(); ++i) {
string newLast = last;
for (char ch = 'a'; ch <= 'z'; ++ch) {
newLast[i] = ch;
if (!dict.count(newLast)) continue;
words.insert(newLast);
vector<string> nextPath = t;
nextPath.push_back(newLast);
if (newLast == endWord) {
res.push_back(nextPath);
minLevel = level;
} else paths.push(nextPath);
}
}
}
return res;
}
};
126.单词接龙II相关推荐
- Leetcode.126 单词接龙 II
题目链接 Leetcode.126 单词接龙 II 题目描述 按字典 wordList完成从单词 beginWord到单词 endWord转化,一个表示此过程的 转换序列 是形式上像 beginWor ...
- LeetCode 126. 单词接龙 II(图的BFS)
1. 题目 给定两个单词(beginWord 和 endWord)和一个字典 wordList,找出所有从 beginWord 到 endWord 的最短转换序列. 转换需遵循如下规则: 每次转换只能 ...
- leetcode 126. 单词接龙 II
leetcode 126题 介绍 方法一 代码 Solution.java Test.java 方法二 算法介绍 在这个过程中需要注意的问题 代码 Solution.java Test.java 介绍 ...
- LeetCode 126 单词接龙 II
题目描述 给定两个单词(beginWord 和 endWord)和一个字典 wordList,找出所有从 beginWord 到 endWord 的最短转换序列.转换需遵循如下规则:每次转换只能改变一 ...
- 126. 单词接龙 II
给定两个单词(beginWord 和 endWord)和一个字典 wordList,找出所有从 beginWord 到 endWord 的最短转换序列.转换需遵循如下规则: 每次转换只能改变一个字母. ...
- LeetCode——126. 单词接龙 II
概述 题目地址 题目不难理解,这里不需要额外解释 思路 首先 题目要求寻找最短转换序列,那么我们容易想到使用BFS BFS思路这里不再介绍 沿着BFS考虑代码编写,问题在于如何正确保存获取目标单词的路 ...
- 2021-06-14(126. 单词接龙 II)
class Solution {public List<List<String>> findLadders(String beginWord, String endWord, ...
- 【每日刷题】单词接龙II
题目地址 https://leetcode-cn.com/problems/word-ladder-ii/ 题目描述:单词接龙II 给定两个单词(beginWord 和 endWord)和一个字典 w ...
- 【数据结构与算法】之深入解析“单词接龙II”的求解思路与算法示例
一.题目要求 按字典 wordList 完成从单词 beginWord 到单词 endWord 转化,一个表示此过程的转换序列是形式上像 beginWord -> s1 -> s2 -&g ...
- lintcode 单词接龙II
题意 给出两个单词(start和end)和一个字典,找出所有从start到end的最短转换序列 比如: 1.每次只能改变一个字母. 2.变换过程中的中间单词必须在字典中出现. 注意事项 所有单词具有相 ...
最新文章
- I need to follow my heart.
- 使用Sentinel配置Redis 3.x主从高可用服务
- 吴恩达作业9:卷积神经网络实现手势数字的识别(基于tensorflow)
- window环境读linux文件,Windows本地环境和Linux腾讯云服务器之间传输文件的方法
- QT保留小数点后位数
- gridlayout布局单元格宽度设置_安卓界面布局之线性布局
- python plt调整子图间隔
- 【Rollo的Python之路】Python 爬虫系统学习 (二) Requests 模块学习
- Python利用Graphviz画图
- ajax一直返回 error
- Unity3D学习1--Unity基础
- vulhub-靶场实战-安装
- app开发,开发app的具体步骤来啦
- 区块链技术应用到现实场景中,是个什么样?
- 【嵌入式linux】使用4G模块EC20自适应运营商和ppp拨号上网
- Matlab绘图(二)—变色散点图二维、三维绘制
- ReactNative 最新教程
- Android智能电视焦点控制
- ip设置与防火墙外网映射
- 解决 Java poi 3.8 等版本 操作 word 插入 图片 不成功的问题
热门文章
- Node.js简介与架构
- linux centos挂载数据盘教程
- MySQL主从复制--mysql-proxy实现MySQL-5.6读写分离
- linux 如何查看 块设备_理解Linux操作系统中的块设备
- Mac电脑下使用Socket报错socket抛出Can’t assign requested address解决
- phpstorm配置ftp,自动更新代码
- Install/RemoveoftheServiceDenied!
- android禁止wifi,android – 防止WiFi-direct在不使用时关闭
- java删除未引用的库_利用Proguard移除无用代码以及碰到的坑
- hadoop namenode启动不了_hadoop全分布式是个什么鬼?!动手搭建Hadoop(4)