Skip to content

Latest commit

 

History

History
144 lines (127 loc) · 19.7 KB

leetcode.md

File metadata and controls

144 lines (127 loc) · 19.7 KB

题目出现频率

LeetCode中的题目按真实面试中的出现频率降序排列。

Col 1 Col 2 Col 3 Col 4
贪心算法 排序
位运算 深度优先搜索 广度优先搜索
并查集 设计 拓扑排序
字典树 树状数组 线段树 二叉搜索树
递归 脑筋急转弯 记忆化 队列
极小化极大 蓄水池抽样 几何 数组
哈希表 链表 数学 双指针
字符串 二分查找 分治算法 动态规划
回溯算法 Random Rejection Sampling Sliding Window
Ordered Map Line Sweep    

GitHub刷题库

刷题记录

从简单题开始刷,给自己点信心,题目太长和超过5分钟不能理解题目含义的直接跳过。 再根据题解数量,先刷题解多的算法题。

用栈做中转,当满足某个条件时,进栈或出栈,很多时候结果就存放在栈中。

题目 思路 实现
20. 有效的括号 辅助栈 查看
496. 下一个更大元素 I 单调栈 查看
682. 棒球比赛 辅助栈 查看
844. 比较含退格的字符串 辅助栈 查看
1047. 删除字符串中的所有相邻重复项 辅助栈 查看

队列

和栈类似,也是做中转,当满足某个条件时,进队或出队,很多时候结果就存放在队列中。

题目 思路 实现
剑指 Offer 59 - I. 滑动窗口的最大值 单调队列 查看

排序

排序好后再做比对或计算。

题目 思路 实现
242. 有效的字母异位词 字母排序 查看
349. 两个数组的交集 查看
350. 两个数组的交集 II 数字排序 查看
922. 按奇偶排序数组 II 双指针 查看
976. 三角形的最大周长 数字排序 查看
1122. 数组的相对排序 计数排序 查看
1356. 根据数字二进制下 1 的数目排序 自定义排序规则 查看
1491. 去掉最低工资和最高工资后的工资平均值 查看
1502. 判断能否形成等差数列 查看

位运算

使用异或、与、非等位运算符解决各类计算。

题目 思路 实现
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] 查看