跳到主要内容

2 篇博文 含有标签「LeetCode」

查看所有标签

图论学习阶段性总结

· 阅读需 3 分钟

本站仅供本人学习使用。本文是我在 2026 年 3 月完成图论基础模块后的复盘与沉淀。

🎯 为什么学图论?

  • 高频考点:图相关问题在大厂面试中频繁出现(如最短路径、连通性、最小生成树等)。
  • 建模能力:现实世界中的网络、依赖关系、路径规划等问题天然适合用图建模。
  • 算法基石:掌握图的遍历与经典算法,是理解更复杂数据结构(如网络流、拓扑排序)的前提。

📚 已掌握的核心内容

模块关键知识点典型算法/工具
基础概念有向图 vs 无向图、度(入度/出度)、连通性(强连通分量)
图的表示邻接矩阵(稠密图)、邻接表(稀疏图)
遍历策略深度优先搜索(DFS)、广度优先搜索(BFS)栈/递归、队列
集合管理不相交集合的合并与查询并查集(路径压缩 + 按秩合并)
最小生成树连接所有节点的最小权重子图Prim(点贪心)、Kruskal(边贪心 + 并查集)
最短路径单源最短路径问题Dijkstra(非负权)、Bellman-Ford(含负权)

💡 刷题实践与典型题型

通过 KamaCoder 和 LeetCode 完成以下类型题目:

1. DFS/BFS 应用

  • 所有可达路径:回溯记录完整路径(DFS 模板)。
  • 岛屿问题系列(计数、最大面积、沉没孤岛):网格 DFS + 反向思维(“灌水法”)。
  • 高山流水:双起点反向 DFS,求交集区域。

2. 并查集实战

  • 寻找存在的路线:判断两点是否连通(基础 Union-Find)。
  • 多余的边:检测环的形成(Kruskal 的逆向应用)。
  • 建造最大岛屿:预处理岛屿编号 + 枚举填海(两阶段优化)。

3. 最小生成树(MST)

  • 寻宝 / 连接所有点的最小费用:Prim(邻接矩阵)与 Kruskal(边排序 + 并查集)双解法对比。
  • 非连通图处理:Kruskal 中检查 used_edge == n-1

4. 最短路径

  • 参加科学大会:Dijkstra 求单源最短路(优先队列优化)。
  • 城市间货物运输:Bellman-Ford 处理负权边,并检测负环影响。

🔧 工具与方法论

  • 刷题平台LeetCodeKamaCoder
  • 学习参考代码随想录 - 图论精讲
  • 代码规范
    • C++ ACM 模式(主函数读写 + 算法封装)
    • 模板化实现(如 UnionFind, dijkstra, kruskal
    • 边界条件全覆盖(图不连通、全陆地、负环等)

🔄 下一步计划

  1. 进阶图算法:拓扑排序、欧拉路径、二分图匹配。
  2. 动态规划 + 图结合:如 DAG 上的 DP。
  3. 真题强化:LeetCode Hot 100 图论专题 + 周赛真题复现。

💬 最后

图论不是一蹴而就的技能,而是日积月累的沉淀。
从死记模板到理解“为什么用这个算法”,每一道题都是思维的锤炼。
我会在这里持续更新我的思考、错误、优化与总结。不为炫耀,只为成长。

🌐 在线访问:https://algo.zj.cn
📝 备案号:鄂ICP备2026007433号

开始我的算法学习之旅

· 阅读需 2 分钟

本站仅供本人学习使用。本文是我在 2026 年制定的算法学习起点记录。

🎯 为什么学算法?

  • 面试必备:大厂笔试 & 面试高频考察
  • 思维训练:提升逻辑、抽象与问题拆解能力
  • 工程基础:理解底层数据结构,写出更高效的代码

📅 我的学习计划

阶段内容目标
第1周数组 + 双指针 + 二分查找掌握基础题型,完成 30 道 LeetCode
第2周链表 + 栈 + 队列理解指针操作与线性结构
第3周哈希表 + 字符串提升空间换时间的思维
第4周树 + DFS/BFS攻克递归与遍历问题
后续动态规划、回溯、图论...逐步进阶

🔧 工具与环境

  • 刷题平台:LeetCode
  • 学习参考:代码随想录
  • 本地练习:VS Code + Node.js
  • 笔记整理:本博客(基于 Docusaurus 构建)
  • 代码规范:ES6+,注重可读性与注释

💬 最后

算法不是一蹴而就的技能,而是日积月累的沉淀。
我会在这里持续更新我的思考、错误、优化与总结。

不为炫耀,只为成长。

🌐 在线访问:https://algo.zj.cn
📝 备案号:鄂ICP备2026007433号