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

相关推荐
爱coding的橙子5 小时前
每日算法刷题Day78:10.23:leetcode 一般树7道题,用时1h30min
算法·leetcode·深度优先
Swift社区5 小时前
LeetCode 403 - 青蛙过河
算法·leetcode·职场和发展
Dream it possible!7 小时前
LeetCode 面试经典 150_链表_两数相加 (57_2_C++_中等)
leetcode·链表·面试
极客数模11 小时前
2025年MathorCup 大数据竞赛明日开赛,注意事项!论文提交规范、模板、承诺书正确使用!2025年第六届MathorCup数学应用挑战赛——大数据竞赛
大数据·python·算法·matlab·图论·比赛推荐
仰泳的熊猫12 小时前
LeetCode:51. N 皇后
数据结构·c++·算法·leetcode
独自破碎E12 小时前
LeetCode 381: O(1) 时间插入、删除和获取随机元素 - 允许重复
java·算法·leetcode
Miraitowa_cheems12 小时前
LeetCode算法日记 - Day 81: 最大子数组和
java·数据结构·算法·leetcode·决策树·职场和发展·深度优先
im_AMBER15 小时前
Leetcode 35
笔记·学习·算法·leetcode
码农多耕地呗15 小时前
力扣101.对称二叉树(java)
算法·leetcode
软行16 小时前
LeetCode 每日一题 166. 分数到小数
数据结构·c++·算法·leetcode·哈希算法