(Since 2020.10.14-2021.3.10)
LeetCode刷题笔记,共两百多题,记录整理如下:
动态规划
1 q5最长回文子串 - 动态规划法 - 中心扩散法 参考:动态规划、中心扩散、Manacher 算法
2 q1143最长公共子序列 - 动态规划法 参考:视频图解 动态规划 最长公共子序列
3 q53最大子序和 - 动态规划法 - 贪心算法 参考:最大子序和
4 q300最长上升子序列 -动态规划法 参考:最长上升子序列(动态规划 + 二分查找,清晰图解)
5 q120三角形最小路径和 -动态规划法
6 q152乘积最大子数组 -动态规划法 参考:DP方法详解
7 q121买卖股票的最佳时机 -动态规划法
8 q122买卖股票的最佳时机 II -动态规划法 参考: 暴力搜索、贪心算法、动态规划
9 q123买卖股票的最佳时机 III -动态规划法 参考:通俗易懂的动态规划解法
10 q70爬楼梯 -动态规划法
11 q746使用最小花费爬楼梯 -动态规划法
12 q64最小路径和 -动态规划法
13 小兔的棋盘 -动态规划法
14 q309最佳买卖股票时机含冷冻期 -动态规划法
15 q714买卖股票的最佳时机含手续费 -动态规划法
16 q118杨辉三角 -动态规划
17 q62不同路径 -动态规划法
18 q139单词拆分 -动态规划法 -递归法
19 q392判断子序列 -暴力解法
20 q300最长上升子序列 -双循环 -DP
21 q322零钱兑换 -dp法
22 q198打家劫舍 -dp法
23 q132. 分割回文串 II -双动态规划法
24 q494. 目标和 -dp法
回溯
1 q39组合总和 -解法 -参考:97%速度,很简明的思路
2 q46全排列 -解法 -参考:回溯算法入门级详解 + 练习(持续更新)
3 q47全排列II -解法
4 q40组合总和 II -解法
5 216. 组合总和 III -解法
6 q78子集 -从下往上回溯 -参考题解:回溯算法
7 q90子集 II -从下往山回溯
8 q131. 分割回文串 -回溯法
滑动窗口
1 q283 移动零 -解法
2 剑指 Offer 42 连续子数组的最大和 -单循环遍历
3 剑指 Offer 57 - II. 和为s的连续正数序列 -暴力枚举法 -函数解析法 -滑动窗口法 - 参考题解和为s的连续正数序列
4 q159. 至多包含两个不同字符的最长子串 -滑动窗口
5 q340. 至多包含 K 个不同字符的最长子串 -滑动窗口法
6 q1004. 最大连续1的个数 III -滑动窗口法
7 q424. 替换后的最长重复字符 -滑动窗口法
8 q567. 字符串的排列 -暴力法 -滑动窗口法
9 1100. 长度为 K 的无重复字符子串 -滑动窗口法
10 1438. 绝对差不超过限制的最长连续子数组 -滑动窗口超时间 -滑动窗口法
11 480. 滑动窗口中位数 -sortedlist+滑动窗口
12 239. 滑动窗口最大值 -偷懒解法滑动窗口+sortedlist
13 978. 最长湍流子数组 -滑动窗口法
14 1151. 最少交换次数来组合所有的 1 -滑动窗口法
15 1052. 爱生气的书店老板 -滑动窗口法
16 1658. 将 x 减到 0 的最小操作数 -滑动窗口
17 395. 至少有 K 个重复字符的最长子串 -暴力法+Counter -滑动窗口超时 -滑动窗口法 -分治法 -参考题解:至少有K个重复字符的最长子串
18 *718. 最长重复子数组 -动态规划法 -滑动窗口法 -二分查找法
哈希相关
1 q1两数之和 -解法
2 q387字符串中的第一个唯一字符 -解法
3 q242有效的字母异位词 -hash法
4 q290单词规律 -解法
5 q560. 和为K的子数组 -hash+前缀和
6 q523. 连续的子数组和 -hash+前缀和
7 q974. 和可被 K 整除的子数组 -hash+前缀和
二叉搜索树
1 q450删除二叉搜索树中的节点 -递归法
2 q701二叉搜索树中的插入操作 -解法
3 q98验证二叉搜索树 -解法
双指针法
1 q26删除排序数组中的重复项 -双指针法
2 q209长度最小的子数组 -双指针法
3 q42接雨水 -按行求解 -按列求解 -动态规划法 -栈解法 参考:详细通俗的思路分析,多解法
4 q76最小覆盖子串 -双指针法
5 面试题 10.01. 合并排序的数组 -逆向双指针法
6 q344反转字符串 -双指针法
7 q487最大连续1的个数II -双指针法
8 q845数组中的最长山脉 -双指针法
9 q15三数之和 -排序剪枝双指针法 参考:排序 + 双指针,逐行解释
10 q16最接近的三数之和 -双指针加排序
11 q259较小的三数之和 -双指针加排序
12 q713乘积小于K的子数组 -*优雅的双指针 -我的题解 参考:乘积小于K的子数组
13 q345反转字符串中的元音字母 -首尾双指针
14 q349两个数组的交集 -排序双指针
15 q922按奇偶排序数组 II -解法
16 q88 合并两个有序数组 -解法
17 q1099. 小于 K 的两数之和 -暴力枚举法 -双指针法 - 参考题解:图解「小于 K 的两数之和」
贪心算法
1 q1024视频拼接 -贪心法 -DP法
2 q861翻转矩阵后的得分 -贪心解法
二分查找
1 LCP18早餐组合 -线性复杂度解法 -排序加二分查找
2 q34在排序数组中查找元素的第一个和最后一个位置 -二分查找
3 剑指 Offer 53 - I. 在排序数组中查找数字 I -二分查找 -*参考题解:面试题53 - I. 在排序数组中查找数字 I(二分法,清晰图解)
4 1150. 检查一个数是否在数组中占绝大多数 -二分查找
5 704. 二分查找 -二分查找 -参考题解:二分查找
6 540. 有序数组中的单一元素 -异或法 -二分查找法
7 275. H 指数 II -二分法
8 852. 山脉数组的峰顶索引 -二分查找法
树相关
1 q144二叉树的前序遍历 -解法
2 q129求根到叶子节点数字之和 -递归法
3 q104二叉树的最大深度 -递归法
4 q662二叉树最大宽度 -层次遍历
5 q102二叉树的层序遍历 -层次遍历
6 q145二叉树的后序遍历 -递归法
7 q94二叉树的中序遍历 -递归法
8 q110平衡二叉树 -递归法
9 q107二叉树的层次遍历II -层次遍历
10 q103二叉树的锯齿形层次遍历 -BFS
11 q637二叉树的层平均值 -BFS
12 q111二叉树的最小深度 -递归法
13 q113路径总和II -递归法 -巧妙递归,不用复制路径
14 q437路径总和 III -丑陋解法 -巧妙递归
15 q1026节点与其祖先之间的最大差值 -递归法
16 q814二叉树剪枝 -优雅的递归,mark
17 q543二叉树的直径 -递归
18 q226翻转二叉树 -解法
19 q101对称二叉树 -递归法
20 q617合并两个二叉树 -解法
数学相关
1 q1356根据数字二进制下 1 的数目排序 -解法
2 q1643第 K 条最小指令 -优先确定最高位 参考:*第 K 条最小指令
3 q258各位相加 -解法
4 q1262可被三整除的最大和 -解法 -我的题解
5 q136只出现一次的数字 -排序法 -异或法
6 q448找到所有数组中消失的数字 -排序 -集合set -原地修改,秒 参考:找到所有数组中消失的数字
7 q461汉明距离 -转二进制+异或 -一行代码
8 q204计数质数 -厄拉多塞筛法 -参考题解:计数质数(暴力法及优化、筛法及优化与思路详解)
9 q633 平方数之和 -解法 -参考题解:平方数之和
10 剑指 Offer 03. 数组中重复的数字 -解法
11 剑指 Offer 14- I. 剪绳子 -投机取巧归纳法 -参考:计算法
快慢指针
1 q287寻找重复数 -题解 参考*前端灵魂画师图解快慢指针
2 q141环形链表 -快慢指针法
3 q142环形链表 II -快慢指针法
4 q19删除链表的倒数第N个节点 -快慢指针法
5 q202快乐数 -快慢指针法
6 q876链表的中间结点 -快慢指针法
链表
1 剑指 Offer 25. 合并两个排序的链表 -解法
2 q206反转链表 -解法
3 q234回文链表 -解法
4 q146LRU缓存机制 -字典加链表
5 q21合并两个有序链表 -解法
6 剑指 Offer 22. 链表中倒数第k个节点 -快慢指针
堆
- 1 q973最接近原点的 K 个点 -暴力解法
栈
1 q946验证栈序列 -解法
2 q20有效的括号 -解法
3 q224基本计算器 -解法
4 q739每日温度 -暴力法超时 -栈的解法 -题解
5 q394字符串解码 -解法
6 q456 132模式 -暴力法 -stack
7 q1190反转每对括号间的子串 -解法
8 q856. 括号的分数 -丑陋的写法
9 q232. 用栈实现队列 -解法
10 q503. 下一个更大元素 II -单调栈法
11 q496. 下一个更大元素 I -单调栈法
12 q1019. 链表中的下一个更大节点 -单调栈
13 q1047. 删除字符串中的所有相邻重复项 -栈
q
队列
- 1 q406根据身高重建队列 -解法 参考:【先排序,再插队】动画演示算法过程,有点小套路
其他
1 q485最大连续1的个数 -解法
2 q1078Bigram分词 -解法
3 q1480一维数组的动态和 -解法
4 q1365有多少小于当前数字的数字 -解法
5 q539最小时间差 -解法
6 q1085最小元素各数位之和 -解法
7 q1207独一无二的出现次数 -解法
8 q57插入区间 -分支解法
9 q127单词接龙 -迭代法 -BFS
10 q551学生出勤记录I -解法
11 q31下一个排列 -解法
12 q134加油站 -暴力解法 -单次循环遍历
13 q659分割数组为连续子序列 -解法
14 q14最长公共前缀 -解法
15 q621任务调度器 -解法 -参考题解*:【任务调度器】C++ 桶子_配图理解
16 q49 字母异位词分组 -解法