LeetCode 题目总结

本博客不定期更新LeetCode题目总结,所有题目使用Java实现,小部分题目也提供JavaScript代码。我不追求一行AC但是我追求一题多解,比较常规的思路,解释清楚复杂度,代码可读性强。欢迎留言和评论,共同进步。这本是我自己用来复习的笔记,如果也能帮到你,那也是我的福报。

如果你想按类型刷题,可以参考我的标签。我做出的分类比LC官方的更细一些,比如我有如下展示的这些类型,其中有一些类型在2021年6月以前官方没有收录,有的按照题设分类,有的按照思路/解法分类。同时有一些题目的解法或者思想很类似的,我也会以相关题目的形式列在文章的最底部。对于每一种类型的题,你可以基本按照题号从小到大开始刷,比较小的题号(尤其前400)都是经典题,比较大的题号往往是前400题内相同类型题目的 followup 或变形。题是刷不完的,只有总结反思才会有提高。

  • flood fill 岛屿类 - 往往是通过BFS/DFS从一个点开始遍历整个二维数组,根据题意找岛的个数/面积
  • matrix 矩阵类,跟岛屿类型的题很接近,但是主要考点是二维数组的非常规遍历,翻转。官方把岛屿类的题也归类到 matrix 一类了,我这里做了一些区分
  • monotonic stack 单调栈 - 不容易想到但是的确能解决问题的一种思路,如果不用单调栈,暴力解基本是 O(n^2) 级别的
  • two pointer 双指针,包括很多可以用双指针做但是没有标注成双指针类型的题
  • line sweep 扫描线
  • counting sort 计数排序
  • bucket sort 桶排序
  • Longest Increasing Subsequence (LIS) 最长递增子序列
    • 这个类型的题往往跟DP有关
  • two sum 两数之和 - 一些算是 two sum 的 followup 题
  • MOD - 结果非常大,需要取模的题。如果需要优化,大多涉及到二分
  • binary search 二分法
  • Dijkstra 迪杰斯特拉算法
    • 使用类似广度优先搜索的方法解决有权图的单源最短路径问题
  • graph 图论 - 包括很多 input signature 给的是树但是实际是需要自己把图或邻接表建立起来的题,和官方压根没有给出 graph 这个 tag 的题(比如1192题2021年6月这个题官方加了tag了
  • knapsack 背包问题 - 动态规划中的一个子类
  • memorization - 记忆化(递归)- 动态规划中的一个子类
  • simulation - 模拟,一般不涉及算法,就是根据题意实现

发现博客园没有很好的文章目录,我做了一个腾讯文档记录总结写过题解的题目并附上链接。

原文地址:https://www.cnblogs.com/cnoodle/p/12515334.html