Skip to content

bruceblink/algo-python

Repository files navigation

LeetCode 系统刷题计划。这份计划旨在帮助您覆盖核心知识点,并通过经典题目掌握解题方法。

请注意,难度评级是相对的,您的实际感受可能不同。您可以根据自己的情况调整每个阶段的时间和重点。

第一阶段:基础入门与核心数据结构

  • 目标: 熟悉平台,掌握数组、字符串、链表、栈、队列、哈希表这些基础数据结构及其操作,理解二分查找。主要集中在 Easy 和 Medium 难度题目。
  1. 数组 (Arrays) & 字符串 (Strings)
  2. 链表 (Linked Lists)
  3. 栈 (Stacks) & 队列 (Queues)
  4. 哈希表 (Hash Tables)
  5. 二分查找 (Binary Search)

第二阶段:进阶数据结构与算法思想

  • 目标: 掌握树和图的基础算法,理解递归、回溯、动态规划、贪心等核心思想。主要集中在 Medium 难度题目,少量 Easy/Hard。
  1. 树 (Trees)

  2. 图 (Graphs) - 基础

  3. 递归 (Recursion) 与回溯 (Backtracking)

  4. 动态规划 (Dynamic Programming - DP)

    • 概念: 理解 DP 的两个关键特征(重叠子问题、最优子结构),理解状态和状态转移方程,会使用 DP table (通常是数组)。从简单问题开始。
    • 技巧: 定义状态、推导转移方程、确定 base case、填充 DP table。
    • 题目:
  5. 贪心算法 (Greedy Algorithm)

  6. 堆 (Heap) / 优先队列 (Priority Queue)

    • 概念: 理解堆是一种特殊的树形数据结构,能快速找到最大/最小元素,用于实现优先队列。
    • 技巧: 使用语言内置的优先队列(如 Python 的 heapq)。
    • 题目:

第三阶段:高级算法与混合应用

  • 目标: 挑战更复杂的 DP、图算法,掌握单调栈/队列等特定模式,学习一些不常用但重要的算法。主要集中在 Medium 和 Hard 难度题目。
  1. 单调栈 (Monotonic Stack) & 单调队列 (Monotonic Queue)

  2. 高级 DP

  3. 图的高级算法 (概念理解与应用)

    • 概念: 拓扑排序、最短路径(Dijkstra, Floyd-Warshall 了解)、最小生成树(Prim, Kruskal 了解)。
    • 题目:
  4. Trie (前缀树)

  5. 并查集 (Union Find)

第四阶段:模拟面试与查漏补缺

  • 目标: 将掌握的知识灵活运用,提高速度和准确率,适应面试环境。
  1. 参加 LeetCode 周赛/双周赛: 在规定时间内独立完成题目,检验自己的水平。
  2. 随机刷题: 使用 LeetCode 题库的随机功能,或者按照公司标签刷题,模拟面试的随机性。
  3. 模拟面试: 与他人进行模拟面试,练习在压力下清晰地表达思路、写代码、调试。
  4. 回顾总结:
    • 整理错题本,定期复习。
    • 总结常见算法模式的识别方法和解题框架。
    • 对每个知识点,能够不看代码白板写出其核心实现。

如何使用这份列表:

  • 按部就班: 建议大致按照阶段和主题的顺序进行。
  • 注重理解: 每道题都要理解其考察的知识点、为什么这种算法适用、以及代码的每一步。
  • 自己先尝试: 不要轻易看题解,先独立思考和尝试。
  • 多解法比较: 理解一种解法后,去看看是否有其他解法,对比它们的优劣。
  • 反复练习: 对于重要的经典题目,过一段时间再做一遍,检查是否真正掌握。

祝您刷题顺利,不断进步!

About

LeetCode 系统刷题计划

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages