LeetCode中的题目按真实面试中的出现频率降序排列。
Col 1 | Col 2 | Col 3 | Col 4 |
---|---|---|---|
栈 | 堆 | 贪心算法 | 排序 |
位运算 | 树 | 深度优先搜索 | 广度优先搜索 |
并查集 | 图 | 设计 | 拓扑排序 |
字典树 | 树状数组 | 线段树 | 二叉搜索树 |
递归 | 脑筋急转弯 | 记忆化 | 队列 |
极小化极大 | 蓄水池抽样 | 几何 | 数组 |
哈希表 | 链表 | 数学 | 双指针 |
字符串 | 二分查找 | 分治算法 | 动态规划 |
回溯算法 | Random | Rejection Sampling | Sliding Window |
Ordered Map | Line Sweep |
从简单题开始刷,给自己点信心,题目太长和超过5分钟不能理解题目含义的直接跳过。 再根据题解数量,先刷题解多的算法题。
用栈做中转,当满足某个条件时,进栈或出栈,很多时候结果就存放在栈中。
题目 | 思路 | 实现 |
---|---|---|
20. 有效的括号 | 辅助栈 | 查看 |
496. 下一个更大元素 I | 单调栈 | 查看 |
682. 棒球比赛 | 辅助栈 | 查看 |
844. 比较含退格的字符串 | 辅助栈 | 查看 |
1047. 删除字符串中的所有相邻重复项 | 辅助栈 | 查看 |
和栈类似,也是做中转,当满足某个条件时,进队或出队,很多时候结果就存放在队列中。
题目 | 思路 | 实现 |
---|---|---|
剑指 Offer 59 - I. 滑动窗口的最大值 | 单调队列 | 查看 |
排序好后再做比对或计算。
使用异或、与、非等位运算符解决各类计算。
题目 | 思路 | 实现 |
---|---|---|
136. 只出现一次的数字 | 异或 | 查看 |
169. 多数元素 | 查看 | |
191. 位1的个数 | 二进制 | 查看 |
231. 2的幂 | 查看 | |
268. 缺失数字 | 减法 | 查看 |
371. 两整数之和 | 异或+移位+与 | 查看 |
389. 找不同 | 异或 | 查看 |
461. 汉明距离 | 异或 | 查看 |
可以用递归遍历二叉树,添加各种边界条件。
题目 | 思路 | 实现 |
---|---|---|
100. 相同的树 | 递归 | 查看 |
101. 对称二叉树 | 递归 | 查看 |
104. 二叉树的最大深度 | 递归 | 查看 |
107. 二叉树的层次遍历 II | BFS+辅助栈 | 查看 |
110. 平衡二叉树 | 两次递归 | 查看 |
112. 路径总和 | 减法递归 | 查看 |
102. 二叉树的层序遍历 | 辅助队列 | 查看 |
98. 验证二叉搜索树 | 中序遍历 | 查看 |
199. 二叉树的右视图 | BFS+取最后一个结点 | 查看 |
103. 二叉树的锯齿形层次遍历 | BFS | 查看 |
113. 路径总和 II | DFS+回溯 | 查看 |
105. 从前序与中序遍历序列构造二叉树 | 前序+中序 | 查看 |
226. 翻转二叉树 | 递归+左右结点互换 | 查看 |
96. 不同的二叉搜索树 | 卡塔兰数 | 查看 |
236. 二叉树的最近公共祖先 | 递归 | 查看 |
题目 | 思路 | 实现 |
---|---|---|
783. 二叉搜索树节点最小距离 | 中序遍历 | 查看 |
938. 二叉搜索树的范围和 | DFS | 查看 |
1137. 第 N 个泰波那契数 | 递归+缓存 | 查看 |
剑指 Offer 10- II. 青蛙跳台阶问题 | 递归 | 查看 |
题目 | 思路 | 实现 |
---|---|---|
141. 环形链表 | 双指针 | 查看 |
160. 相交链表 | 双指针 | 查看 |
876. 链表的中间结点 | 双指针 | 查看 |
题目 | 思路 | 实现 |
---|---|---|
14. 最长公共前缀 | 遍历 | 查看 |
680. 验证回文字符串 Ⅱ | 双指针 | 查看 |
647. 回文子串 | 递归 | 查看 |
题目 | 思路 | 实现 |
---|---|---|
53. 最大子序和 | 双重循环或动态规划 | 查看 |
题目 | 思路 | 实现 |
---|---|---|
17. 电话号码的字母组合 | 回溯模板 | 查看 |
22. 括号生成 | 递归加左括号或加右括号 | 查看 |
题目 | 思路 | 实现 |
---|---|---|
435. 无重叠区间 | 按终点排序 | 查看 |
455. 分发饼干 | 将饼干大小和孩子需求升序 | 查看 |
860. 柠檬水找零 | 用最大面值找零 | 查看 |
55. 跳跃游戏 | 计算各个位置的最远距离 | 查看 |
122. 买卖股票的最佳时机 II | 今天的股价 - 昨天的股价 | 查看 |
题目 | 思路 | 实现 |
---|---|---|
198. 打家劫舍 | dp[n] = max(dp[n-1], dp[n-2] + nums[n]) | 查看 |
746. 使用最小花费爬楼梯 | dp[n] = min(dp[n-2], dp[n-1]) + cost[n] | 查看 |
1143. 最长公共子序列 | dp[i][j] = (dp[i-1][j-1] + 1) | max(dp[i-1][j], dp[i][j-1]) | 查看 |
300. 最长上升子序列 | dp[i][i] = 1 | max(dp[i][j]) + 1 | 查看 |
322. 零钱兑换 | dp[i][j] = min(dp[i-1][j], dp[i][j - coins[i]] + 1) | 查看 |
120. 三角形最小路径和 | dp[i][j] = min(dp[i-1][j], dp[i-1][j-1]) + triangle[i][j] | 查看 |