leetcode_c++:Word Ladder II(126)
2016-06-11 22:11
435 查看
题目
Given two words (beginWord and endWord), and a dictionary’s word list, find all shortest transformation sequence(s) from beginWord to endWord, such that:Only one letter can be changed at a time
Each intermediate word must exist in the word list
For example,
Given:
beginWord = “hit”
endWord = “cog”
wordList = [“hot”,”dot”,”dog”,”lot”,”log”]
Return
[
[“hit”,”hot”,”dot”,”dog”,”cog”],
[“hit”,”hot”,”lot”,”log”,”cog”]
]
算法
题意说明:从start变换到end,途中只能经过字典中的单词,每次只允许差一个字母。要求输出所有变换路径。
分析:题倒是不难,但时间卡的特别紧。
常规方法:BFS搜索,节点的数据结构包含:当前单词、记录变换路径的hash表、记录变换路径的ArrayList。搜索所有和当前单词只差一个字母的单词,查询新单词是否在字典中同时是否已经存在于变换路径中,如果在字典中同时不在已有的变换路径中,把新单词放入队列,继续BFS。代码如下,可惜大数据超时。
待续
相关文章推荐
- c语言学习笔记24之内存
- 【C++】Visual Studio 2012 MFC——Expression: _pFirstBlock==pHead解决办法
- 程序在vs2010下能运行,独立运行生成的exe文件时会崩溃。
- 一起talk C栗子吧(第一百六十四回:C语言实例--const关键字)
- c++部分知识小结&static和const的解释
- C++ vector用法
- C++的三种new简介及重载局部(类内部)与全局operator new
- 数组名a与数组名取地址&a的差异
- Debug Assertion Failed!........File:dbgdel.cpp
- C语言实现分布式自增有序的唯一ID生成算法-snowflake算法
- 利用c语言实现写入数据
- Geekban极客班 C++第五周
- C++中#if,#ifdef,ifndef
- 【每天学一点】C++基础03
- C++的函数重载
- c语言实现图的深度优先遍历和广度优先遍历
- 阶乘计算升级版(大整数)
- c&c++函数变参的实现
- 详解C/C++预处理器
- c语言中的strlen函数