LeetCode
RoadMap
Index
二叉树
124. 二叉树中的最大路径和(DFS)
https://leetcode-cn.com/problems/binary-tree-maximum-path-sum/description/
题目描述
暴力求解的思路
利用一个子函数,求出每个节点最大深度路径和(做法类似求树的深度)
注意,因为节点中的值可能为负数,所以最大深度路径和不一定都会到达叶子
同样,最大深度路径和也可能为负数,此时应该返回 0
接着对每个节点,经过该节点的最大路径和为
空树的最大路径和应该为负无穷(作为递归基);但实际用例中没有空树的情况
C++
初始版本(AC)
改进
使用一个变量保存中间结果
优化方案
记忆化搜索(树DP);简单来说,就是保存中间结果
数组
560. 和为K的子数组(前缀和 + Map)
https://leetcode-cn.com/problems/subarray-sum-equals-k/description/
问题描述
思路
前缀和 + map
难点在于重复的情况也要记录
C++
838. 推多米诺(双指针)
问题描述
思路
如果给原始输入左右分别加上一个 "L" 和 "R",那么共有以下 4 种可能
[C++/Java/Python] Two Pointers - LeetCode
C++
15. 三数之和(双指针)
问题描述
思路
因为需要输出所有结果,所以不推荐使用 map 来做
判断
a + b + c = 0,实际上等价于判断-a = b + c基本思路:对数组排序后,对每个
a,用首尾双指针进行遍历,具体过程看代码更清晰去重的方法:排序后,跳过相同的数即可
注意边界条件
C++
16. 最接近的三数之和(双指针)
题目描述
思路
区别仅在于循环内的操作不同
C++
729. 我的日程安排表 I(多级排序)
题目描述
思路
按 start 排序,利用二分查找(lower_bound),找到待插入位置
关键是判断能否插入,需要同时判断前后位置,此时需要注意边界条件
C++
C++-利用 STL 中的 set/map 结构自动排序
26. 删除排序数组中的重复项
https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/description/
题目描述
C++
暴力搜索
200. 岛屿的个数(DFS | BFS)
https://leetcode-cn.com/problems/number-of-islands/description/
问题描述
思路
经典的 DFS | BFS 问题,搜索连通域的个数
Code: DFS
Code: BFS
最后更新于
这有帮助吗?