(Since 2020.10.14-2021.3.10)
LeetCode刷题笔记,共两百多题,记录整理如下:
动态规划
1 q5最长回文子串 - 动态规划法 - 中心扩散法 参考:动态规划、中心扩散、Manacher 算法
2 q1143最长公共子序列 - 动态规划法 参考:视频图解 动态规划 最长公共子序列
6 q152乘积最大子数组 -动态规划法 参考:DP方法详解
8 q122买卖股票的最佳时机 II -动态规划法 参考: 暴力搜索、贪心算法、动态规划
11 q746使用最小花费爬楼梯 -动态规划法
20 q300最长上升子序列 -双循环 -DP
23 q132. 分割回文串 II -双动态规划法
回溯
1 q39组合总和 -解法 -参考:97%速度,很简明的思路
2 q46全排列 -解法 -参考:回溯算法入门级详解 + 练习(持续更新)
4 q40组合总和 II -解法
5 216. 组合总和 III -解法
8 q131. 分割回文串 -回溯法
滑动窗口
3 剑指 Offer 57 - II. 和为s的连续正数序列 -暴力枚举法 -函数解析法 -滑动窗口法 - 参考题解和为s的连续正数序列
8 q567. 字符串的排列 -暴力法 -滑动窗口法
12 239. 滑动窗口最大值 -偷懒解法滑动窗口+sortedlist
13 978. 最长湍流子数组 -滑动窗口法
15 1052. 爱生气的书店老板 -滑动窗口法
17 395. 至少有 K 个重复字符的最长子串 -暴力法+Counter -滑动窗口超时 -滑动窗口法 -分治法 -参考题解:至少有K个重复字符的最长子串
18 *718. 最长重复子数组 -动态规划法 -滑动窗口法 -二分查找法
哈希相关
二叉搜索树
3 q98验证二叉搜索树 -解法
双指针法
2 q209长度最小的子数组 -双指针法
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 的两数之和」
贪心算法
2 q861翻转矩阵后的得分 -贪心解法
二分查找
3 剑指 Offer 53 - I. 在排序数组中查找数字 I -二分查找 -*参考题解:面试题53 - I. 在排序数组中查找数字 I(二分法,清晰图解)
6 540. 有序数组中的单一元素 -异或法 -二分查找法
7 275. H 指数 II -二分法
树相关
1 q144二叉树的前序遍历 -解法
3 q104二叉树的最大深度 -递归法
4 q662二叉树最大宽度 -层次遍历
5 q102二叉树的层序遍历 -层次遍历
6 q145二叉树的后序遍历 -递归法
7 q94二叉树的中序遍历 -递归法
10 q103二叉树的锯齿形层次遍历 -BFS
11 q637二叉树的层平均值 -BFS
12 q111二叉树的最小深度 -递归法
13 q113路径总和II -递归法 -巧妙递归,不用复制路径
14 q437路径总和 III -丑陋解法 -巧妙递归
16 q814二叉树剪枝 -优雅的递归,mark
17 q543二叉树的直径 -递归
20 q617合并两个二叉树 -解法
数学相关
2 q1643第 K 条最小指令 -优先确定最高位 参考:*第 K 条最小指令
4 q1262可被三整除的最大和 -解法 -我的题解
5 q136只出现一次的数字 -排序法 -异或法
6 q448找到所有数组中消失的数字 -排序 -集合set -原地修改,秒 参考:找到所有数组中消失的数字
8 q204计数质数 -厄拉多塞筛法 -参考题解:计数质数(暴力法及优化、筛法及优化与思路详解)
9 q633 平方数之和 -解法 -参考题解:平方数之和
11 剑指 Offer 14- I. 剪绳子 -投机取巧归纳法 -参考:计算法
快慢指针
1 q287寻找重复数 -题解 参考*前端灵魂画师🎨图解快慢指针
3 q142环形链表 II -快慢指针法
6 q876链表的中间结点 -快慢指针法
链表
4 q146LRU缓存机制 -字典加链表
5 q21合并两个有序链表 -解法
堆
栈
6 q456 132模式 -暴力法 -stack
8 q856. 括号的分数 -丑陋的写法
9 q232. 用栈实现队列 -解法
10 q503. 下一个更大元素 II -单调栈法
11 q496. 下一个更大元素 I -单调栈法
13 q1047. 删除字符串中的所有相邻重复项 -栈
q
队列
其他
1 q485最大连续1的个数 -解法
2 q1078Bigram分词 -解法
3 q1480一维数组的动态和 -解法
6 q1085最小元素各数位之和 -解法
7 q1207独一无二的出现次数 -解法
10 q551学生出勤记录I -解法
13 q659分割数组为连续子序列 -解法
15 q621任务调度器 -解法 -参考题解*:【任务调度器】C++ 桶子_配图理解
16 q49 字母异位词分组 -解法