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

阜宁做网站价格网络营销常见术语

阜宁做网站价格,网络营销常见术语,云砺信息科技做网站,seo外包 靠谱126. 单词接龙 II 需要注意的是,由于要找最短路径,连接 dot 与 lot 之间的边就不可以被记录下来,同理连接 dog 与 log 之间的边也不可以被记录。这是因为经过它们的边一定不会是最短路径。因此在广度优先遍历的时候,需要记录的图…

126. 单词接龙 II

在这里插入图片描述


需要注意的是,由于要找最短路径,连接 dot 与 lot 之间的边就不可以被记录下来,同理连接 dog 与 log 之间的边也不可以被记录。这是因为经过它们的边一定不会是最短路径。因此在广度优先遍历的时候,需要记录的图的关系如下图所示。

在这里插入图片描述
在广度优先遍历的时候,我们需要记录:从当前的单词 currWord 只变化了一个字符以后,且又在单词字典中的单词 nextWord 之间的单向关系(虽然实际上无向图,但是广度优先遍历是有方向的,我们解决这个问题可以只看成有向图),记为 from,它是一个映射关系:键是单词,值是广度优先遍历的时候从哪些单词可以遍历到「键」所表示的单词,使用哈希表来保存。


Java代码:牛逼格拉斯!

class Solution {public List<List<String>> findLadders(String beginWord, String endWord, List<String> wordList) {List<List<String>> res = new ArrayList<>();Set<String> dict = new HashSet<>(wordList);if (!dict.contains(endWord)) {return res;}Map<String, Integer> steps = new HashMap<>();  Map<String, Set<String>> from = new HashMap<>();   // 无向图,记录层数boolean found = bfs(beginWord, endWord, dict, steps, from);  // 构建无向图if (found) {Deque<String> path = new ArrayDeque<>();  // 从尾往前addpath.add(endWord);dfs(from, path, beginWord, endWord, res);  // 开始回溯}return res;}private void dfs(Map<String, Set<String>> from, Deque<String> path, String beginWord, String cur, List<List<String>> res) {if (cur.equals(beginWord)) {res.add(new ArrayList<>(path));return;}for (String precursor : from.get(cur)) {  // 回溯!path.addFirst(precursor);dfs(from, path, beginWord, precursor, res);  // from有向图path.removeFirst();}}private boolean bfs(String beginWord, String endWord, Set<String> dict, Map<String, Integer> steps, Map<String, Set<String>> from) {int wordLen = beginWord.length();int step = 0;steps.put(beginWord, step);  boolean found = false;dict.remove(beginWord);Queue<String> queue = new LinkedList<>();queue.offer(beginWord);  // 用于BFS层搜索while (!queue.isEmpty()) {step++;int size = queue.size();for (int i = 0; i < size; i++) {  // 遍历队列:这一层的String currWord = queue.poll();char[] charArray = currWord.toCharArray();for (int j = 0; j < wordLen; j++) {  // 单词数组char origin = charArray[j];for (char c = 'a'; c <= 'z'; c++) {  // 对单词的每一个位进行更替charArray[j] = c;String nextWord = String.valueOf(charArray);if (steps.containsKey(nextWord) && steps.get(nextWord) == step) { // 归一的时候出现,即dog log到cog的时候from.get(nextWord).add(currWord);  // from: 广度优先遍历的时候从哪些单词可以遍历到「键」所表示的单词}                                      // 遍历第i层的时候,step == i + 1; if (!dict.contains(nextWord)) {  // 在当前层遍历的时候,已去除自身,下一层入队列,并去除在dict的记录continue;}// System.out.println(nextWord);dict.remove(nextWord);queue.offer(nextWord); // 进入到此处的都是下一层的,下一层入队列,并记录层数。当前层的已经被过滤掉了steps.put(nextWord, step);  // 记录nextWord的层数from.putIfAbsent(nextWord, new HashSet<>());  // from是映射图from.get(nextWord).add(currWord);  // currWord映射到nextWord,有向图if (nextWord.equals(endWord)) { // 不能在这里进行break,要继续填充endWord的setfound = true;}}charArray[j] = origin;}}if (found) {  // 每一层结束后判断,找到最短路径,退出whilebreak;}}return found;}
}
http://www.khdw.cn/news/62859.html

相关文章:

  • 毕业设计做网站 答辩会问什么问题百度竞价排名广告定价
  • 网站备案查询不出来做seo需要用到什么软件
  • 我的世界做外国壁纸网站排名优化工具下载
  • wordpress嵌入flash安卓aso优化工具
  • 做网站那个搜索引擎好著名的营销成功的案例
  • 网站开发定制宣传图片南京百度seo代理
  • 西安做网站的公司有哪些杭州seo网站推广
  • 室内设计接单网站站长工具果冻传媒
  • 小型企业网站开发价格新闻热点事件2024最新
  • 公司如何登录网站做就业登记网络seo排名
  • 从零开始学习网络营销seo搜索引擎优化兴盛优选
  • 百度竞价推广代运营话术搜索引擎外部链接优化
  • 网站开发广告语大全网站制作公司怎么找
  • 丹东网站建设公司阿里云万网域名购买
  • 开网站制作公司深圳网络营销推广外包
  • 数据可视化seo百度快速排名软件
  • 商务网站开发考题b2b免费外链发布
  • 做幼儿园网站的意义微信公众号小程序怎么做
  • 徐州教育平台网站建设seo优化工具有哪些
  • wordpress输入框长度百度搜索关键词优化方法
  • 微信网站制作系统百度提交入口网址是指在哪里
  • 重庆建设工程信息网官网平台关键词优化快速排名
  • 网站的横幅怎么做成品ppt网站国外
  • 民宿网站开发的开题报告seo搜索引擎优化原理
  • 东莞网站优化电话网站优化方式有哪些
  • 香港专业做网站的公司信息如何优化上百度首页
  • 做独立网站给你的启发是什么seo课程总结怎么写
  • 城乡建设部网官方网站附近广告公司联系电话
  • 哪个网站可以做面料订单网络软文推广案例
  • 在线做名片做海报网站销售网络平台推广