JiJingYu / leetcode-hot100

leetcode-hot100-python

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

leetcode-hot100

leetcode-hot100-python

关键词与解题思路(实时更新)

Hot100 按出现频率排序—解题思路 review

1-10

  1. 两数之和。Hashmap,空间换时间,扩展:on 时间复杂度寻找两数之差等于定值,用在求子数组和为 k 或其他类似题目上。
  2. 最长回文子串。动态规划法、中心扩张法。马拉车不用记。
  3. LRU 缓存机制。??
  4. 反转链表。链表基础题。递归或者遍历。对于 python 有一行代码替换三个变量解法,画图有助于理解。可以参考 verilog 的阻塞赋值理解。
  5. 两个有序数组的中位数。这道题再练习一下。二分搜索,中位数的定义,细节题。
  6. 无重复字符的最长子串。滑动窗口常规题,hashmap,记录窗口内每个字符的 ind。
  7. 编辑距离。动态规划题。需要再练习
  8. 接雨水。单调栈或者两次扫描。两次扫描更好用。这道题单调栈加了很多细节,不容易快速 bug free。
  9. 两数相加。链表题。简单题。记得合理考虑进位。
  10. 最大矩形。单调栈或两次扫描。推荐两次扫描,容易理解

11-20

  1. 三数之和。细节题。去重等等细节,再练习一下
  2. 最大子序和。On,dp,状态压缩
  3. 合并k个排序链表。细节题,堆排序 + 链表模板题。
  4. 字符串解码。??
  5. 合并两个有序链表。简单题
  6. 全排列。回溯题,再练习一下
  7. 最长上升子序列。动态规划解法,0n2;二分搜索,onlogn,tails[i] 保存长度为 i+1 的最长上升子序列的尾值。单增(可反证)
  8. 零钱兑换。典型 dp 题,再练习一下。dp 题先画状态转移图,思路清晰。
  9. 二叉树中的最大路径和。最大子序和的扩充版本。二叉树遍历 + 最大子序和
  10. 排序链表。练习一下如何归并。如何不用递归 o(1) 完成是难点,细节繁多。

21-30

  1. 爬楼梯,典型的 dp,模板题
  2. 岛屿数量。图的遍历,模板题
  3. 盛最多水的容器。双指针+递归的**,如何证明,很有意思。
  4. 戳气球??DP hard,复习一下。这种题直接画状态按 dp 解。
  5. 有效的括号。括号题,easy。复习一下
  6. 会议室 2. 基于事件的解法,非常简单。订 +1,退订 -1.
  7. 最长有效括号。Bfs 求最短距离。复习下。
  8. 正则表达式匹配。递归的解法我知道。搞搞细节,思考下 dp 的解法
  9. 最大正方形。中等题目,难度不大。压缩 dp 状态需要画图,容易出错。类比二维卷积寄存器滑窗。
  10. 根据身高重建队列。??

31-40

  1. 最小覆盖子串。双指针滑动窗口题。加点细节
  2. 删除无效的括号。困难题。Bfs 最短距离,参考 27 联动一下
  3. 数组中的第 k 大元素。快速选择算法,on
  4. 完全平方数。二分搜索,练习一下
  5. 买卖股票的最佳时机。Dp,简单题
  6. 删除链表的倒数第 n 个节点。方法有很多。Dummy。遍历一次求长度,遍历两次求xx
  7. 和为 k 的子数组。累计和,two sum
  8. 二叉树的中序遍历
  9. 括号生成。左右括号计数,dfs。合法结束判定、剪枝判定、下一个状态判定
  10. 搜索旋转排序数组。二分搜索练习题

41-50

  1. 最小路径和。Dp,状态转移。
  2. 合并区间。先排序再扫描。
  3. 电话号码的字母组合。基础 DFS
  4. 下一个排列。??逻辑题
  5. 滑动窗口最大值。单调递减队列
  6. 翻转二叉树。左子树等于翻转右子树,右同理
  7. 二叉树的直径。??
  8. 每日温度。单调栈。具体内容忘了。也可以用单次扫描
  9. 乘积最大子序列。注意不要写出 bug
  10. 搜索二维矩阵 II。双指针扫描

51-60

  1. 子集。??递归,复习下
  2. 跳跃游戏。动态规划,复习下
  3. 旋转图像。数学题
  4. 柱状图中的最大矩形。单调栈。单次扫描可以做吗,思考下
  5. 单词搜索。前缀树,复习下
  6. 最长连续序列。单次扫描 + hashmap,很有趣的题
  7. 二叉树的层次遍历。BFS
  8. 组合总和。递归题。??
  9. 不同路径。??
  10. 二叉树的最大深度。DFS

61-70

  1. 寻找重复数。??
  2. 前序和中序遍历,构造二叉树
  3. 二叉树的最近公共祖先。
  4. 回文链表。额外空间,栈。无额外空间,翻转后半部分。
  5. 回文子串。??
  6. 最佳买卖股票含冷冻期。DP,复习下
  7. 环形链表。简单题
  8. 实现 trie。简单题
  9. 任务调度器。??
  10. 单词拆分。??忘记了

71-80

  1. 对称二叉树。简单。左等于右,
  2. 打家劫舍。Dp。??
  3. 最小栈。看下答案,没搞懂题目想要做什么。??
  4. 只出现一次的数字。??异或
  5. 合并二叉树。??
  6. 相交链表。有趣的题目。??
  7. 多数元素。Morre 计数法。
  8. 目标和。??
  9. 二叉树展开为链表??
  10. 不同的二叉搜索树。??

81-90

  1. 二叉树的序列化与反序列化。BFS 和 DFS,分别练习一下。建树的过程比较绕。??复习一下
  2. 找到字符串中的所有字母异位词。??hashmap
  3. 移动零。技巧题
  4. 环形链表 II。??
  5. 除自身以外数组的乘积。??
  6. 课程表??
  7. 在排序数组中查找元素的第一个和最后一个位置。二分搜索,练习一下。
  8. 找到所有数组中消失的数字。??
  9. 颜色分类??
  10. 打家劫舍 iii。??

91-100

  1. 前k个高频元素。堆排序模板题。
  2. 分割等和子集??
  3. 除法求值??。图的拓扑排序
  4. 字母异位词分组。??
  5. 验证二叉搜索树。中序遍历,单调递增。
  6. 最短无序连续子数组。??
  7. 路径总和 iii。??
  8. 把二叉搜索树转换为累加树。??
  9. 汉明距离。
  10. 比特位计数。??

About

leetcode-hot100-python