上一页 1 2 3 4 5 6 7 8 9 10 ··· 15 下一页
摘要: 首先规律实际上是好找的 找几个点就可以发现是 (i, j) -> (j, n - 1 - i) 的形式 接着是考虑要原地修改 原地修改那么就是每次要修改 4 个位置 这样的话存一个 tmp ,剩下的先逆时针(逆序)拷贝,避免覆盖 最后考虑的是从哪些位置出发改,不会重复 1 2 3 4 5 6 7 8 阅读全文
posted @ 2026-04-09 22:00 rdcamelot 阅读(17) 评论(0) 推荐(0)
摘要: 从定义出发不难想到这关键就是怎么去表示这个类,怎么设计这个哈希 比较简单的就是用排序,排完序的作为键 时间复杂度 O(nklogk),因为排序的时间是 klogk class Solution { public: vector<vector<string>> groupAnagrams(vector 阅读全文
posted @ 2026-04-09 18:21 rdcamelot 阅读(15) 评论(0) 推荐(0)
摘要: 感觉就是搜索 依据当前剩余的左括号和右括号判断怎么添加是合适的 class Solution { public: vector<string> generateParenthesis(int n) { vector<string> ans; auto dfs = [&](auto self, int 阅读全文
posted @ 2026-04-09 12:47 rdcamelot 阅读(18) 评论(0) 推荐(0)
摘要: 滑动窗口移动的过程就是不断有元素进/出的过程 要维护这个过程中现有元素的最大值 那最基础的就是维护一个元素有没有出现 但是一个窗口中可能有多个相同元素,因此再加上元素的出现次数 因此一个数组来维护出现次数,一个优先队列来维护现有元素 每次移动同步对元素进行更新维护 class Solution { 阅读全文
posted @ 2026-04-08 23:50 rdcamelot 阅读(14) 评论(0) 推荐(0)
摘要: 因为 n, m 都挺小的,只有 300,所以暴力一点也没什么问题 比如直接查找,或者按照行的开头元素进行二分搜索来缩小一些范围 class Solution { public: bool searchMatrix(vector<vector<int>>& a, int x) { int n = a. 阅读全文
posted @ 2026-04-06 16:32 rdcamelot 阅读(18) 评论(0) 推荐(0)
摘要: 这种最小以及小的最优在更大问题中也最优的情况一般都是考虑动态规划 1 <= n <= 10^4,注意到 n 很小, nlogn 能过,所以直接做就可以 class Solution { public: int numSquares(int n) { vector<int> dp(n + 1, INT 阅读全文
posted @ 2026-04-04 22:57 rdcamelot 阅读(15) 评论(0) 推荐(0)
摘要: 双指针 原地操作基本就是用交换了 l 指针维护已处理好的序列的末尾(l 之前的就是非零的数字序列) r 指针表示当前正在处理的元素 如果 r 对应的元素非零,那么和 l 指向的位置交换,为了减少交换的次数,如果 l == r,那么自然是不用交换的 class Solution { public: v 阅读全文
posted @ 2026-04-03 12:20 rdcamelot 阅读(7) 评论(0) 推荐(0)
摘要: 问题就是要把一个树压缩成一个序列,并且可以恢复 最直接的序列化实际上就是前序、后序这样的形式 在一般的二叉树的题中,需要前序+中序才能还原树 但是如果我们把 null 也存下来,那么一个前序实际上已经足够还原树的信息了 前序的顺序是 根->左->右 反序列化的时候,也是类似的,先建根节点,然后递归构 阅读全文
posted @ 2026-04-03 12:08 rdcamelot 阅读(10) 评论(0) 推荐(0)
摘要: 关键在于不能修改原数组以及只能用 O(1) 额外空间 这样排序、set、计数等方法都不行 从额外空间的角度,只能原地修改,或者说使用类似于置换环的形式 这是基于元素的数值范围在 1 到 n 之间所考虑到的,因为置换环的形式能让数字去到它应有的位置,进而达到类似于排序的效果 从这个角度,发现我们如果这 阅读全文
posted @ 2026-04-02 23:27 rdcamelot 阅读(17) 评论(0) 推荐(0)
摘要: LIS 比较经典的形式 一种相对较优的 DP 是长度为 len 的上升子序列,结尾最小 可以是多少 这是因为在长度固定的情况下,结尾越小,后续越有利 且显然,这样我们的 dp 数组是单调的 class Solution { public: int lengthOfLIS(vector<int>& a 阅读全文
posted @ 2026-04-02 00:07 rdcamelot 阅读(19) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 7 8 9 10 ··· 15 下一页