上一页 1 2 3 4 5 6 7 8 9 ··· 15 下一页
摘要: 熟悉的形式是合并两个链表 那要合并多个的时候想想能不能从这个基础情况推导出去 如果是合并完两个,再接着合并下一个,这样显然有些繁琐 注意到链表合并是和顺序,大小都无关的 也就是说我们只关注数量 那么不妨分治 也就是两两合并 因为顺序无关,所以左右各自合并,然后再左右合并没有问题 /** * Defi 阅读全文
posted @ 2026-04-16 22:49 rdcamelot 阅读(15) 评论(0) 推荐(0)
摘要: 因为搜索树 左侧一定小于,右侧一定大于 那么从结果上来说的话就是左子树的值应该是自身加上根节点及右子树 其他的都是右节点 但是树的问题只能自底向上或者自顶向下 对于左子树需要上一层,右子树需要下一层这样的情况用 dfs 显然不太好做 但是先左->根->右这样的大小关系想到了中序遍历 如果我们有中序遍 阅读全文
posted @ 2026-04-15 22:24 rdcamelot 阅读(11) 评论(0) 推荐(0)
摘要: 考虑下一个排列应该是什么样的 下一个排列要变大,而且变大的应该尽量少 于是前缀应该尽可能不变,也就是调整的位置应该尽可能靠后 于是我们倒序去找,因为前缀不变,所以变的那个数字就是和后缀中大于它的数交换 所以就是后缀中存在大于它的数,这种情况下我们可以交换 因此不妨维护后缀最大值,这样当前元素小于那个 阅读全文
posted @ 2026-04-15 15:42 rdcamelot 阅读(22) 评论(0) 推荐(0)
摘要: 首先同样考虑之前提过的有效括号的形式 也就是 左括号的数量等于右括号,且中间过程中右括号不能大于左括号 如果不考虑后者的限制的话其实思路挺简单的,就是维护前缀和数组,维护每个前缀和第一次出现的位置 但是这样我们没法顾及到那个限制,因为我们仅考虑前缀和的话,相当于只保证了内部的个数是相同的,但是顺序是 阅读全文
posted @ 2026-04-14 22:44 rdcamelot 阅读(21) 评论(0) 推荐(0)
摘要: 我觉得挺有意思的一题,对于二分的理解应当是有帮助的 首先,二分的核心在于有序 我们通过中间点 mid 和 target 的大小关系可以知道它的一侧和 target 的关系 比如 mid 比 target 小,那么 mid 左侧的元素一定都比 target 小,进而我们只需要看右侧就可以了 现在回到这 阅读全文
posted @ 2026-04-14 00:59 rdcamelot 阅读(19) 评论(0) 推荐(0)
摘要: 时间复杂度要求 log 那么自然是二分 用库函数,一个大于等于的是最早出现的,和第一个大于的 - 1 的是最迟出现的 class Solution { public: vector<int> searchRange(vector<int>& a, int target) { vector<int> 阅读全文
posted @ 2026-04-12 16:52 rdcamelot 阅读(17) 评论(0) 推荐(0)
摘要: 树 dp 左子树的(链)最大长度,右子树的最大长度 直径就是左加右 + 1 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * T 阅读全文
posted @ 2026-04-12 16:37 rdcamelot 阅读(16) 评论(0) 推荐(0)
摘要: 要记录所有可行的方案,一般都是考虑回溯 回溯如果每次都值传递,那么会比较复杂 合适一些的是外侧预先维护好这个数组 接着是这题有一个条件是一个元素是可以任意选择次数的 这种时候的 dfs 就是维护当前位置的元素放还是不放,如果放了,我们可以还可以继续用这个元素,也就是传给下一轮的位置不变 class 阅读全文
posted @ 2026-04-12 16:18 rdcamelot 阅读(29) 评论(0) 推荐(0)
摘要: 不难想到一个点能否接到水,以及能接到多少水是和它左侧以及右侧第一个大于它的元素是有关的 它的贡献是对应的横向的矩形 这个信息的处理可以用单调栈来做 若记为 pre 和 suf , 那么这个点的贡献是 if (pre[i] == -1 || suf[i] == -1) { continue; } an 阅读全文
posted @ 2026-04-12 00:06 rdcamelot 阅读(18) 评论(0) 推荐(0)
摘要: 也就是每一位选什么 选能选的 选好之后传下去,然后回溯,继续选择这一位的下一个能选的 class Solution { public: vector<vector<int>> permute(vector<int>& nums) { vector<vector<int>> ans; vector<i 阅读全文
posted @ 2026-04-11 22:41 rdcamelot 阅读(16) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 7 8 9 ··· 15 下一页