博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Leetcode] Word Ladder I,II
阅读量:5286 次
发布时间:2019-06-14

本文共 1131 字,大约阅读时间需要 3 分钟。

一、问题描述:

Given:

start = "hit"
end = "cog"
dict = ["hot","dot","dog","lot","log"]

As one shortest transformation is "hit" -> "hot" -> "dot" -> "dog" -> "cog",

return its length 5.

二、实际上这里是广度优先搜索,需要记录遍历的层数,因此需要记录已经访问过的节点,这里使用set进行标记。

1、我们可以另外使用一个set来进行标记,也就是将访问过的节点放到一个set当中,在[1]当中作者利用了传入的参数set,但是对set进行了修改(当访问了一个word之后,将其从set当中删除,当再次遇到这个节点的时候由于它已经不在字典当中,所以无需再次访问)。由于对传入的数据进行了修改,我觉得第二种方法是不好的。

2、如何记录每一层,可以使用类似 当中的方法,在每一层进行遍历之前,首先检查queue当中的节点的个数size,如果在这一层只需从队列当中出列size个元素即可,剩下的元素实际上是下一层的元素,需要在下一层当中进行访问。

我的代码如下:

1 import java.util.*; 2  3 public class Solution { 4     public int ladderLength(String beginWord, String endWord, Set
wordDict) { 5 Set
set = new HashSet
(); 6 Queue
queue=new LinkedList
(); 7 queue.add(beginWord); 8 set.add(beginWord); 9 int level=1;10 while(!queue.isEmpty()){11 level++;12 int size = queue.size();13 for(int ii=0;ii

 

转载于:https://www.cnblogs.com/deepblueme/p/4733771.html

你可能感兴趣的文章
0925 韩顺平java视频
查看>>
iOS-程序启动原理和UIApplication
查看>>
mysql 8.0 zip包安装
查看>>
awk 统计
查看>>
模板设计模式的应用
查看>>
实训第五天
查看>>
平台维护流程
查看>>
2012暑期川西旅游之总结
查看>>
12010 解密QQ号(队列)
查看>>
2014年辛星完全解读Javascript第一节
查看>>
装配SpringBean(一)--依赖注入
查看>>
java选择文件时提供图像缩略图[转]
查看>>
方维分享系统二次开发, 给评论、主题、回复、活动 加审核的功能
查看>>
Matlab parfor-loop并行运算
查看>>
string与stringbuilder的区别
查看>>
2012-01-12 16:01 hibernate注解以及简单实例
查看>>
iOS8统一的系统提示控件——UIAlertController
查看>>
PAT甲级——1101 Quick Sort (快速排序)
查看>>
python创建进程的两种方式
查看>>
1.2 基础知识——关于猪皮(GP,Generic Practice)
查看>>