LeetCode 热题100 图论专题解析

LeetCode 热题100 图论专题解析

图论是计算机科学中非常重要的领域,广泛应用于各种算法和实际问题中。在 LeetCode 热题100 中,图论相关的题目主要涉及深度优先搜索(DFS)、广度优先搜索(BFS)以及拓扑排序等技巧。本文将深入解析这些题目,帮助读者掌握图论相关问题的解决方法。

1. 岛屿数量

题目描述 :给定一个由 '1'(陆地)和 '0'(水)组成的二维网格,计算岛屿的数量。岛屿由水平方向或垂直方向上相邻的陆地组成,且一个格子只能属于一个岛屿。
解题思路:使用 DFS 或 BFS。遍历网格,当遇到陆地时,从该点开始进行 DFS 或 BFS,标记所有相连的陆地,然后岛屿数量加一。

2. 腐烂的橘子

题目描述 :在给定的网格中,每个单元格可以有以下三个值之一:0 表示空单元格,1 表示新鲜橘子,或 2 表示腐烂的橘子。每分钟,腐烂的橘子会使其水平或垂直相邻的新鲜橘子腐烂。编写代码以计算从左上角开始,腐烂所有橘子所需的最少分钟数。
解题思路:使用 BFS。将所有腐烂的橘子作为起点进行 BFS,记录每个新鲜橘子腐烂的时间。

3. 课程表

题目描述 :判断是否可能完成所有课程的学习。课程之间存在先修关系,表示为二维数组 prerequisites。
解题思路:使用拓扑排序。构建一个有向图,然后进行拓扑排序,如果在排序过程中没有发现环,则可以完成所有课程。

4. 实现 Trie (前缀树)

题目描述 :实现一个 Trie(前缀树),包含 insert, search, 和 startsWith 这三个操作。
解题思路:构建 Trie 树的数据结构,每个节点包含一个字符和一个指示是否是单词结尾的标志。

相关推荐
浩瀚星辰202412 小时前
图论基础算法:DFS、BFS、并查集与拓扑排序的Java实现
java·算法·深度优先·图论
JiaJZhong13 小时前
力扣.最长回文子串(c++)
java·c++·leetcode
凌肖战15 小时前
力扣网编程150题:加油站(贪心解法)
算法·leetcode·职场和发展
吃着火锅x唱着歌15 小时前
LeetCode 3306.元音辅音字符串计数2
算法·leetcode·c#
kngines15 小时前
【力扣(LeetCode)】数据挖掘面试题0003: 356. 直线镜像
leetcode·数据挖掘·直线镜像·对称轴
不見星空15 小时前
【leetcode】1751. 最多可以参加的会议数目 II
算法·leetcode
不見星空15 小时前
leetcode 每日一题 3439. 重新安排会议得到最多空余时间 I
算法·leetcode
SsummerC15 小时前
【leetcode100】下一个排列
python·算法·leetcode
shylyly_17 小时前
专题一_双指针_查找总价格为目标值的两个商品
c++·算法·leetcode·双指针·查找总价格为目标值的两个商品·和为s的两个数
嗜好ya18 小时前
LeetCode 560: 和为K的子数组
数据结构·算法·leetcode