Leetcode练习之搜索

Posted coding-fairyland

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode练习之搜索相关的知识,希望对你有一定的参考价值。

深度优先搜索和广度优先搜索广泛运用于树和图中,但是它们的应用远远不止如此。

BFS

技术图片

 

广度优先搜索一层一层地进行遍历,每层遍历都是以上一层遍历的结果作为起点,遍历一个距离能访问到的所有节点。需要注意的是,遍历过的节点不能再次被遍历。

第一层:

  • 0 -> {6,2,1,5}

第二层:

  • 6 -> {4}
  • 2 -> {}
  • 1 -> {}
  • 5 -> {3}

第三层:

  • 4 -> {}
  • 3 -> {}

每一层遍历的节点都与根节点距离相同。设 di 表示第 i 个节点与根节点的距离,推导出一个结论:对于先遍历的节点 i 与后遍历的节点 j,有 di <= dj。利用这个结论,可以求解最短路径等 最优解 问题:第一次遍历到目的节点,其所经过的路径为最短路径。应该注意的是,使用 BFS 只能求解无权图的最短路径,无权图是指从一个节点到另一个节点的代价都记为 1。

在程序实现 BFS 时需要考虑以下问题:

  • 队列:用来存储每一轮遍历得到的节点;
  • 标记:对于遍历过的节点,应该将它标记,防止重复遍历。

1. 计算在网格中从原点到特定点的最短路径长度

1091. Shortest Path in Binary Matrix(Medium)

 

以上是关于Leetcode练习之搜索的主要内容,如果未能解决你的问题,请参考以下文章

leetcode腾讯精选练习之最长公共前缀

leetcode腾讯精选练习之相交链表

leetcode练习之No.7------ 翻转整数reverse_integer

leetcode腾讯精选练习之旋转链表

leetcode腾讯精选练习之除自身以外数组的乘积

leetcode腾讯精选练习之删除链表中的结点