(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 字母异位词分组 -解法
网友评论