Leetcode 127 **
class Solution {
public:
    int ladderLength(string beginWord, string endWord, vector<string>& wordList) {
        unordered_set<string> wordset(wordList.begin(),wordList.end());
        wordset.erase(beginWord);
        int res = ;
        queue<string> que{{beginWord}};
        while(!que.empty()){
            int len = que.size();
            for(int i=;i < len;i++){//坑:int i=0;i < que.size();i++  que.size()会不停改变
                string word = que.front(); que.pop();
                if(word == endWord) return res+;
                for(int i=;i < word.size();i++){
                    string newword = word;
                    for(char ch = 'a';ch <= 'z';ch++){
                        newword[i] = ch;
                        if(wordset.count(newword)){
                            que.push(newword);
                            wordset.erase(newword);
                        }
                    }
                }
            }
            res++;
        }
        return ;  //没找到
    }
};
好题!第一次见这题还是在一年前刚学算法的时候,今日硬着头皮分析了下去,前几天写的DFS T了,我都写了DFS居然没有想到这其实是一个求图的最短跳数的题:
单词之间能够变化可以抽象为两点之间有一条有向路径,BFS找到第一个点有向路径连接的所有点加入队列,然后对队列中的点再找图中剩下直连的点,最先到达终点的距离就是层数,直接返回。
还有要把层次遍历和BFS联系起来!都是用的队列,对每“批次”的队列遍历循环,两者本质是一样的。
最后注意 que.size()的坑,之前遇到过,还好看出来了。
Leetcode 127 **的更多相关文章
- leetcode@ [127] Word Ladder (BFS / Graph)
		
https://leetcode.com/problems/word-ladder/ Given two words (beginWord and endWord), and a dictionary ...
 - [LeetCode] 127. Word Ladder 单词阶梯
		
Given two words (beginWord and endWord), and a dictionary's word list, find the length of shortest t ...
 - leetcode 127. Word Ladder、126. Word Ladder II
		
127. Word Ladder 这道题使用bfs来解决,每次将满足要求的变换单词加入队列中. wordSet用来记录当前词典中的单词,做一个单词变换生成一个新单词,都需要判断这个单词是否在词典中,不 ...
 - Java实现 LeetCode 127 单词接龙
		
127. 单词接龙 给定两个单词(beginWord 和 endWord)和一个字典,找到从 beginWord 到 endWord 的最短转换序列的长度.转换需遵循如下规则: 每次转换只能改变一个字 ...
 - leetcode 127. Word Ladder  ----- java
		
Given two words (beginWord and endWord), and a dictionary's word list, find the length of shortest t ...
 - Leetcode#127 Word Ladder
		
原题地址 BFS Word Ladder II的简化版(参见这篇文章) 由于只需要计算步数,所以简单许多. 代码: int ladderLength(string start, string end, ...
 - [leetcode]127. Word Ladder单词接龙
		
Given two words (beginWord and endWord), and a dictionary's word list, find the length of shortest t ...
 - [LeetCode] 127. Word Ladder _Medium  tag: BFS
		
Given two words (beginWord and endWord), and a dictionary's word list, find the length of shortest t ...
 - Java for LeetCode 127 Word Ladder
		
Given two words (beginWord and endWord), and a dictionary, find the length of shortest transformatio ...
 
随机推荐
- 使用PlaceHolder,测试碰见的问题
			
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFa ...
 - 【Selenium2】【Python多线程】
			
# all_tests_pro.py import unittest,time,os,multiprocessingimport HTMLTestRunner #查找多有含有thread的文件,文件夹 ...
 - 【BZOJ】3572: [Hnoi2014]世界树
			
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3572 算是细节题了吧.. 构出虚树,考虑z正反DP两次求出虚树中每个点最近的议事处是哪一个 ...
 - P2002 消息扩散
			
其实这道题蛮水的 思路: 根据题意,他说有环,自然想到要用tarjan,后面就很简单了: 缩完点之后重新建图,开一个inin数组表示该点的入度是多少(psps:该点表示缩完点之后的大点): 最后统计一 ...
 - Systemd初始化进程/RHEL 6系统中System V init命令与RHEL 7系统中systemctl命令的对比
			
Linux操作系统的开机过程是这样的,即从BIOS开始,然后进入Boot Loader,再加载系统内核,然后内核进行初始化,最后启动初始化进程.初始化进程作为Linux系统的第一个进程,它需要完成Li ...
 - idea创建web聚合工程(2)
			
参考文档: intelj idea 创建聚合项目(典型web项目,包括子项目util.dao.service) 使用IntelliJ IDEA创建Maven聚合工程.创建resources文件夹.ss ...
 - 【SQL Prompt】SQL Prompt7.2下载及破解教程
			
基本介绍 SQL Prompt能根据数据库的对象名称,语法和用户编写的代码片段自动进行检索,智能的为用户提供唯一合适的代码选择.自动脚本设置为用户提供了简单的代码易读性--这在开发者使用的是不大熟悉的 ...
 - 【汇总】基于.NET平台常用的框架整理
			
分布式缓存框架: Microsoft Velocity:微软自家分布式缓存服务框架. Memcahed:一套分布式的高速缓存系统,目前被许多网站使用以提升网站的访问速度. Redis:是一个高性能的K ...
 - Xshell5中常用linux服务器命令集合
			
简易版:http://www.zhimengzhe.com/linux/84546.html 详细版:http://www.cnblogs.com/peida/tag/%E6%AF%8F%E6%97% ...
 - synchronized中判断条件用while而不是if
			
假设一个生产者生产一个产品,两个消费者A,B去取这个商品. 使用if: A去取商品,发现空,于是等待... B去取商品,发现空,于是等待... 生产者生产商品,唤醒他们 B先争到锁,从wait()后执 ...