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 树的数据结构,每个节点包含一个字符和一个指示是否是单词结尾的标志。

相关推荐
__AtYou__4 小时前
Golang | Leetcode Golang题解之第448题找到所有数组中消失的数字
leetcode·golang·题解
LluckyYH4 小时前
代码随想录Day 58|拓扑排序、dijkstra算法精讲,题目:软件构建、参加科学大会
算法·深度优先·动态规划·软件构建·图论·dfs
转调5 小时前
每日一练:地下城游戏
开发语言·c++·算法·leetcode
huanxiangcoco6 小时前
152. 乘积最大子数组
python·leetcode
希望有朝一日能如愿以偿7 小时前
力扣题解(飞机座位分配概率)
算法·leetcode·职场和发展
Espresso Macchiato7 小时前
Leetcode 3306. Count of Substrings Containing Every Vowel and K Consonants II
leetcode·滑动窗口·leetcode medium·leetcode 3306·leetcode周赛417
数据分析螺丝钉9 小时前
力扣第240题“搜索二维矩阵 II”
经验分享·python·算法·leetcode·面试
no_play_no_games9 小时前
「3.3」虫洞 Wormholes
数据结构·c++·算法·图论
￴ㅤ￴￴ㅤ9527超级帅9 小时前
LeetCode hot100---数组及矩阵专题(C++语言)
c++·leetcode·矩阵
鱼跃鹰飞9 小时前
Leecode热题100-295.数据流中的中位数
java·服务器·开发语言·前端·算法·leetcode·面试