单调栈 |
删除一个元素让字典序最小 柱状图中最大的矩形---LeetCode84(单调栈) 美丽塔---LeetCode2866(单调栈)
|
二叉搜索树 |
有序链表转换二叉搜索树---LeetCode109 不同的二叉搜索树II---LeetCode95
|
BST |
有序链表转换二叉搜索树---LeetCode109 把二叉搜索树转换为累加树---LeetCode538 验证二叉搜索树---LeetCode98
|
链表 |
有序链表转换二叉搜索树---LeetCode109 排序链表---LeetCode148 LRU缓存机制---LeetCode146(链表好像变香了) 合并K个排序链表 K个一组翻转链表---LeetCode25(指针地狱)
|
快慢指针 |
有序链表转换二叉搜索树---LeetCode109 快乐数---LeetCode202判断链表环
|
dp |
最低票价---LeetCode983(简单dp) 打家劫舍IV---LeetCode2560(二分+dp) 分割数组的最大值---LeetCode410(dp) 预测赢家---LeetCode486(博弈) 单词拆分---LeetCode139(背包和字符串) 恰好移动k步到达某一位置的方法数目---LeetCode2400(dp与预处理) 寻宝---LCP13(bfs+状压dp) 最后一块石头的重量II---(还是背包) 最长有效括号---LeetCode32(dp) 最大正方形---LeetCode221(能想到怎么dp就很简单的dp) 跳跃游戏---LeetCode45 买卖股票的最佳时机---LeetCode121(dp) 打家劫舍III---LeetCode337(树形dp) 二叉树灯饰---LeetCode-LCP64(树形dp记忆化搜索) 零钱兑换---LeetCode322(完全背包) Leetcode_coins 组合总和Ⅳ---LeetCode377(完全背包变体) 戳气球---LeetCode312(dp) 通配符匹配---LeetCode44(dp) LeetCode05 获得分数的方法数---LeetCode2585(分组背包模板) 分割等和子集---LeetCode416(其实是背包问题) 目标和---LeetCode49(不太典型的背包) 统计可能的树根数目---LeetCode2581(换根dp) 打家劫舍I&II---LeetCode198&213
|
二分 |
打家劫舍IV---LeetCode2560(二分+dp) LeetCode69 剑指Offer11.旋转数组的最小数字---(二分) 山顶数组中查找目标值(二分法)--LeetCode1095 两数之和II-输入有序数组---LeetCode167(二分或双指针) 二分红蓝染色法---LeetCode153等 寻找两个正序数组的中位数---LeetCode04(噩梦级边界判断) 二分枚举答案判定系列---LeetCode2528等
|
动态规划 |
分割数组的最大值---LeetCode410(dp) 预测赢家---LeetCode486(博弈) 寻宝---LCP13(bfs+状压dp) 跳跃游戏---LeetCode45 戳气球---LeetCode312(dp)
|
博弈 |
预测赢家---LeetCode486(博弈)
|
递归 |
预测赢家---LeetCode486(博弈) 二叉树中序遍历---LeetCode94(递归和栈) 从前序与中序遍历序列构造二叉树---LeetCode105 第k个排列---LeetCode60(优化的力量)
|
dfs |
预测赢家---LeetCode486(博弈) 组合总和---LeetCode39(wsl) 组合---LeetCode77(不小心把组合做成排列了) 二叉树中序遍历---LeetCode94(递归和栈) 全排列Ⅱ---LeetCode47(去重) 解数独---LeetCode37(优化的力量) N皇后---LeetCode51(递归和回溯还是有区别的) 组合总和3---LeetCode216 组合总和2---LeetCode40(答案去重) 收集树上所有苹果---LeetCode5406(碰见树就GG) 第k个排列---LeetCode60(优化的力量) 把二叉搜索树转换为累加树---LeetCode538 统计可能的树根数目---LeetCode2581(换根dp) 建立四叉树---LeetCode427(dfs) 太平洋大西洋水流问题---LeetCode417(dfs)
|
mergeSort |
排序链表---LeetCode148
|
归并 |
排序链表---LeetCode148
|
树状数组 |
逆序对
|
bit |
逆序对
|
归并排序 |
逆序对
|
MergeSort |
逆序对
|
逆序对 |
逆序对
|
二分查找 |
逆序对
|
离散化 |
逆序对
|
前缀和 |
和可被K整除的子数组---LeetCode974(我数学不太好) 找和为k连续子数组---LeetCode560(前缀和+哈希优化) 每个元音包含偶数次的最长子字符串---LeetCode1371(前缀和+哈希优化+状态压缩) 可获得最大点数(乱用DP=炸内存) 乘积为正数的最长子数组长度---LeetCode5500
|
哈希优化 |
和可被K整除的子数组---LeetCode974(我数学不太好)
|
prefix |
找和为k连续子数组---LeetCode560(前缀和+哈希优化)
|
STL |
Leetcode445两数相加(Stack) 重新安排行程---LeetCode332(STL)
|
Stack |
Leetcode445两数相加(Stack) 二叉树的前序遍历---LeetCode144
|
位运算 |
使用xor来找只出现了一次的数字---LeetCode-m56
|
亦或 |
使用xor来找只出现了一次的数字---LeetCode-m56
|
牛顿迭代法 |
LeetCode69
|
状压 |
每个元音包含偶数次的最长子字符串---LeetCode1371(前缀和+哈希优化+状态压缩)
|
周赛186 |
可获得最大点数(乱用DP=炸内存) 对角线遍历---内存开到爆怎么办?用vector吧
|
后缀和 |
可获得最大点数(乱用DP=炸内存)
|
不要乱用dp |
可获得最大点数(乱用DP=炸内存)
|
BinarySerach |
山顶数组中查找目标值(二分法)--LeetCode1095
|
排列组合 |
组合总和---LeetCode39(wsl) 组合总和3---LeetCode216 组合总和2---LeetCode40(答案去重)
|
回溯 |
组合总和---LeetCode39(wsl) 组合---LeetCode77(不小心把组合做成排列了) 全排列Ⅱ---LeetCode47(去重) 统计子树中城市最大距离---LeetCode1617(子集+树形dp) 解数独---LeetCode37(优化的力量) N皇后---LeetCode51(递归和回溯还是有区别的) 组合总和3---LeetCode216 组合总和2---LeetCode40(答案去重) 重新安排行程---LeetCode332(STL)
|
BFS |
用BFS解决交换问题---LeetCode854(BFS) 删除无效的括号---LeetCode301(BFS) 完全平方数---LeetCode279(DP/BFS)
|
智力题 |
到达终点---LeetCode780 加油站---LeetCode134(morethan模拟)
|
map |
205周赛记录---(学会用map+并查集太强了) 旅行终点站---LeetCode5400
|
并查集 |
205周赛记录---(学会用map+并查集太强了) 省份数量---LeetCode547(并查集)
|
连通 |
205周赛记录---(学会用map+并查集太强了)
|
图 |
205周赛记录---(学会用map+并查集太强了) 课程表---LeetCode210(拓扑排序) 可以到达所有点的最少点数目---LeetCode5480
|
暴力 |
24点---LeetCode679
|
递推 |
找到所有好下标---LeetCode6190(递推)
|
|
秋季编程大赛记录 乘积最大子数组---LeetCode152(不会真的有人以为是前缀和吧) 收藏清单---LeetCode5414(能线性扫就别搞两重循环了) 找出数组游戏的赢家---LeetCode5476 2022秋季编程大赛记录 零钱兑换II---LeetCode518(完全背包)
|
组合 |
组合---LeetCode77(不小心把组合做成排列了)
|
排列 |
组合---LeetCode77(不小心把组合做成排列了) 全排列Ⅱ---LeetCode47(去重) 下一个排列---LeetCode31(新的思路)
|
stack |
柱状图中最大的矩形---LeetCode84(单调栈) 二叉树中序遍历---LeetCode94(递归和栈)
|
bfs |
寻宝---LCP13(bfs+状压dp) 二叉树层序遍历----LeetCode102 最小基因变化---LeetCode433(bfs)
|
状态压缩 |
寻宝---LCP13(bfs+状压dp)
|
栈 |
二叉树中序遍历---LeetCode94(递归和栈) 二叉树的前序遍历---LeetCode144 字符串解码---LeetCode394(栈)
|
回文 |
往字符串前面添字符形成的最短回文串---LeetCode214
|
马拉车 |
往字符串前面添字符形成的最短回文串---LeetCode214
|
记录路径 |
好叶子节点对的数量---LeetCode5474(记录路径)
|
剪枝 |
全排列Ⅱ---LeetCode47(去重) 第k个排列---LeetCode60(优化的力量)
|
去重 |
全排列Ⅱ---LeetCode47(去重)
|
拓扑排序 |
课程表---LeetCode210(拓扑排序)
|
哈希 |
LRU缓存机制---LeetCode146(链表好像变香了) 找到字符串中所有字符异位词---LeetCode428(双指针哈希表)
|
树形dp |
统计子树中城市最大距离---LeetCode1617(子集+树形dp) 二叉树里的最大路径和---LeetCode124(别再错了) 统计树中的合法路径数目---LeetCode2867(树形dp)
|
list |
合并K个排序链表
|
集合 |
旅行终点站---LeetCode5400
|
set |
旅行终点站---LeetCode5400 绝对值差不超过限制的最长连续子数组---LeetCode5402
|
出度入度 |
旅行终点站---LeetCode5400
|
快慢指针法 |
寻找重复数---LeetCode287(快慢指针)
|
双指针 |
两数之和II-输入有序数组---LeetCode167(二分或双指针) 无重复最长子串---LeetCode03 找到字符串中所有字符异位词---LeetCode428(双指针哈希表) 盛最多水的容器---LeetCode11(贪心双指针) 绝对值差不超过限制的最长连续子数组---LeetCode5402
|
树 |
二叉树层序遍历----LeetCode102 从前序与中序遍历序列构造二叉树---LeetCode105 收集树上所有苹果---LeetCode5406(碰见树就GG) 另一个树的子树---LeetCode572
|
二叉树 |
不同的二叉搜索树II---LeetCode95 二叉树的最近公共祖先---LeetCode236(后序遍历实现自底向上查找) 平衡二叉树---LeetCode110 二叉树里的最大路径和---LeetCode124(别再错了) 验证二叉搜索树---LeetCode98
|
矩阵 |
最大正方形---LeetCode221(能想到怎么dp就很简单的dp)
|
滑动窗口 |
无重复最长子串---LeetCode03 绝对值差不超过限制的最长连续子数组---LeetCode5402
|
后序遍历 |
二叉树的最近公共祖先---LeetCode236(后序遍历实现自底向上查找)
|
链表找环 |
快乐数---LeetCode202判断链表环
|
字符串数组 |
重新排列句子中的单词---LeetCode5413(在排序时长度相同的保持相对位置不变)
|
贪心 |
跳跃游戏---LeetCode45 盛最多水的容器---LeetCode11(贪心双指针) 排布二进制网格的最少交换次数---LeetCode5477
|
字典树 |
找出强数对的最大异或值---LeetCode2395(字典树)
|
记忆化搜索 |
二叉树灯饰---LeetCode-LCP64(树形dp记忆化搜索)
|
优先队列 |
前K个高频元素---LeetCode347(优先队列)
|
堆 |
前K个高频元素---LeetCode347(优先队列)
|
模拟 |
加油站---LeetCode134(morethan模拟)
|
快速幂 |
Pow(x,n)---LeetCode50(快速幂)
|
邻接表 |
收集树上所有苹果---LeetCode5406(碰见树就GG)
|
背包问题 |
Leetcode_coins
|
回文串 |
LeetCode05
|
马拉车算法 |
LeetCode05
|
twopointers |
绝对值差不超过限制的最长连续子数组---LeetCode5402
|
全排列 |
第k个排列---LeetCode60(优化的力量) 递增子序列---LeetCode491(dp失败QAQ)
|
数学 |
第k个排列---LeetCode60(优化的力量) 找出游戏的获胜者---LeetCode1823(队列模拟链表,数学)
|
tree |
把二叉搜索树转换为累加树---LeetCode538 验证二叉搜索树---LeetCode98
|
队列,链表 |
找出游戏的获胜者---LeetCode1823(队列模拟链表,数学)
|
DFS |
Leetcode199二叉树右视图(DFS) 验证二叉搜索树---LeetCode98 恢复二叉搜索树---LeetCode99(DFS+中序遍历)
|
双dfs |
另一个树的子树---LeetCode572
|
背包 |
获得分数的方法数---LeetCode2585(分组背包模板)
|
中序遍历 |
验证二叉搜索树---LeetCode98 恢复二叉搜索树---LeetCode99(DFS+中序遍历)
|
栈溢出 |
对角线遍历---内存开到爆怎么办?用vector吧
|
数组越界 |
对角线遍历---内存开到爆怎么办?用vector吧
|
质数 |
统计树中的合法路径数目---LeetCode2867(树形dp)
|
DP |
完全平方数---LeetCode279(DP/BFS)
|
分析 |
除数博弈---LeetCode1025(智力题)
|
双序列dp |
两个子序列的最大点积---LeetCode1458(双序列dp)
|
哈希去重 |
递增子序列---LeetCode491(dp失败QAQ)
|
最短路 |
Dijkstra最短路,以及2N节点
|
dijkstra |
Dijkstra最短路,以及2N节点
|