摘要: 动态规划 就是从 s 到 t 的最小步数是多少 (s 到 t 和 t 到 s 是等价的,所以怎么方便怎么来) 之所以是 dp 是因为我们处理好了比如 s 的一个前缀到 t 的一个前缀,那么到了下一个位置的时候,可以从前面的状态转移过来,因为只需要考虑当前的两个元素是否相同 如果相同,那么直接从 dp 阅读全文
posted @ 2026-05-10 11:54 rdcamelot 阅读(3) 评论(0) 推荐(0)
摘要: 没看到只有三种颜色 原地排序用的冒泡 反正 n <= 300 也不影响 class Solution { public: void sortColors(vector<int>& a) { int n = a.size(); for (int i = 0; i < n; i++) { for (in 阅读全文
posted @ 2026-05-10 11:01 rdcamelot 阅读(1) 评论(0) 推荐(0)
摘要: 滑动窗口 从 l = 0 开始不断移动右指针 r 找到一个能满足的窗口 然后缩小窗口直到不满足 接着就继续移动 r 到满足 重复这一个过程 合法性在于固定 l 时移动 r ,我们是在找让这个 l 满足的最小 r 固定 r 移动 l 是找让这个 r 满足的最大 l 并且这个过程中扫到的 l 一定不会更 阅读全文
posted @ 2026-05-09 17:35 rdcamelot 阅读(2) 评论(0) 推荐(0)
摘要: 回溯搜索 每个位置选或不选 class Solution { public: vector<vector<int>> subsets(vector<int>& a) { int n = a.size(); vector<vector<int>> ans; vector<int> tmp; auto 阅读全文
posted @ 2026-05-09 11:32 rdcamelot 阅读(3) 评论(0) 推荐(0)
摘要: 就是维护下每个数有没有出现过,遍历元素,如果构成target需要的元素出现过的话就找到了 class Solution { public: vector<int> twoSum(vector<int>& a, int target) { int n = a.size(); unordered_map 阅读全文
posted @ 2026-05-09 11:07 rdcamelot 阅读(3) 评论(0) 推荐(0)
摘要: 其实有点奇怪这个题单为什么把这题放在前面一题的后面,这个应该算是 easy 版本,或者那道最大矩形是这题的变种 那就再写一些部分 比如前一篇题解提到栈中的元素是贡献还没处理完的 而它的贡献就是在出栈的时候算的 例如栈中是 2 4 那么出栈的时候下标 4 的元素作用的区间就是 [3, i - 1] 因 阅读全文
posted @ 2026-05-08 15:34 rdcamelot 阅读(3) 评论(0) 推荐(0)
摘要: 长和宽都是 200,但是完全暴力显然是不太可行的 如果我们要同时考虑行和列,那么复杂度不太会降 所以尝试固定其中一项,比如固定行,在这个确定要用最底的行去找矩形的前提下思考 这时候只有柱形图是有用的,那么问题就转成了柱形图求最大矩阵 这就比较容易考虑了,我们维护一个单调递增栈,这是因为我们每次添加元 阅读全文
posted @ 2026-05-08 14:37 rdcamelot 阅读(3) 评论(0) 推荐(0)
摘要: 简单搜索 左中右 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(null 阅读全文
posted @ 2026-05-07 23:16 rdcamelot 阅读(5) 评论(0) 推荐(0)
摘要: 注意到 n 很小 每次选定根节点后,剩下的数据可以分成小于它和大于它(对应于左子树和右子树)两部分 每部分又是独立的子问题,所以用 dp 转移就是枚举左子树的大小(实际上就是枚举根节点元素) 这样是可行的,是因为我们并不关注具体元素是什么,我们只关注个数和相对大小关系 class Solution 阅读全文
posted @ 2026-05-07 23:06 rdcamelot 阅读(4) 评论(0) 推荐(0)
摘要: 依然递归 子节点传上来是否合法,如果子树不合法那这棵树一定也不合法 然后我们进行二叉搜索树的性质判定 左子树为例,要判断都小于根节点,那么就只要把左子树的最大值拿出来比较就可以 右子树也是一样的 因此我们回传的时候传递是否合法,还有当前最大值和最小值 /** * Definition for a b 阅读全文
posted @ 2026-05-07 19:51 rdcamelot 阅读(1) 评论(0) 推荐(0)