标签 题目 单调栈 删除一个元素让字典序最小 柱状图中最大的矩形---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节点