- 博客(29)
- 收藏
- 关注
原创 Leetcode周赛378总结
在最大、次大和第三大长度中,选择第三大长度的特殊子字符串。在最大的长度中,选择该长度-2的特殊子字符串。分别记录字符串中各个字符连续出现的子串长度。答案为上述所有情况中的最大值。
2024-01-03 12:23:11
438
原创 Leetcode周赛373总结
设字串长度为L,需要满足 L^2 是 4k的倍数。哈希表统计(i%k’, sum[i])的出现次数。元音字母个数 = 辅音字母个数。前缀和处理子数组元素和。
2023-12-05 15:03:18
56
原创 Leetcode周赛374总结
假设当前可以表示[0, s-1]范围中的数,新来了一个数x,可以新表示的范围是[x, s+x-1]时间复杂度:O(nlogn + log target)
2023-12-04 12:16:12
53
原创 Leetcode双周赛117总结
最终答案 = 总方案数 - 至少满足一个条件 + 至少满足两个条件 - 满足三个条件。总共有26 ^ n个字符串,减去不含leet的字符串个数。满足三个条件:23^n + n * 23^(n-1)同样可以使用容斥原理。
2023-11-15 11:10:31
71
原创 刷题周总结2023.11.2 - 2023.11.8
二分枚举当前可以使用的最大值,将符合条件的顶点构成一张新的有向图,判断是否满足条件。如果枚举了所有情况都不存在满足条件的图,返回-1。最小化最大值 => 二分答案。解题代码: TLE13。
2023-11-10 17:23:57
73
1
原创 Leetcode双周赛116总结
先写记忆化搜索,定义dfs(i, j),表示[0, i]的子数组中,和为j的最长子序列长度。递归入口:dfs(n-1, target)相似题目:LC2262. 字符串的总引力。
2023-11-07 11:57:40
60
原创 Leetcode周赛370总结
f[i] = max(max(f[j], 0)) + nums[i],j满足 j < i 且 b[j] <= b[i]定义b[i] = nums[i] - i,问题变成从b中选出一个非降子序列,求对应的nums的元素和的最大值。定义f[i]表示子序列最后一个数的下标是i时,对应的nums的元素和的最大值,答案会是max(f)定义dfs(x, fa),表示从x节点(选取/未选取)开始遍历到根节点可以得到的最大分数。实现时需要将nums[i] - i 离散化,在使用树状数组 复制 + 排序 + 去重。
2023-11-06 16:22:39
56
原创 刷题周总结(2023.10.26 - 2023.11.1)
在从下往上走的过程中,由于上面的节点(对应的子树)一定包含下面的节点,所以下面节点的基因值集合,一定是上面节点的基因值集合的子集,所以上面节点的 ans 值一定大于等于下面节点的 ans 值。这意味着,在计算 ans[i] 时,不需要从 1 开始枚举,而是从 ans[j]开始枚举(假设从 j往上走到了 i)。如果树中没有一个节点的值为1,则树中所有节点缺少的最小基因值都是1。如果只用上述的思路,会漏掉一种情况:(((()))树中有节点值为1,从该节点开始向上遍历。如果是遇到左括号,入栈,答案加1。
2023-11-01 15:09:25
164
1
原创 Leetcode周赛369总结
本题要注意的点是,各节点金币数最大为1e4,这意味着当cnt >= 14时,数中所有节点都会变为0,此时最大值只能是0,不用再向下搜索。定义dfs(i, fa, cnt),表示从fa经过cnt次第二种方法遍历到i节点,遍历以i节点为根节点的字数可以获得的最大积分。定义dfs(i, j),表示数组[0, i]位置,且右侧有j个小于k的数时,需要的最小运算数。递归入口:dfs(n-, 0)
2023-11-01 15:05:53
97
1
原创 Leetcode周赛368总结
由这两个式子可以解出 k1 + k2 的最小值,如果此时k1、k2均满足大于等于0,将k1 + k2累加到答案中。遍历完所有频数后,得到在一种拆分成d1、d2的方案下拆出的组数。最后的答案应该是所有拆分方案下拆出组数的最小值。递归入口: dfs(0, k)
2023-10-23 11:50:10
64
原创 Leetcode周赛366总结
首先考虑什么情况下会返回-1,每次操作都是翻转两个不同下标的数,因此总会改变两个位置是否相等的状态;如果初始情况下s1 和 s2中不相同的位置数为奇数,那么永远无法变得相同,返回-1 (也可以参考灵神的讲解,由于一次翻转两个位置,所以字符串中1出现次数的奇偶性是不变的,如果初始状态下两个字符串中1出现次数的奇偶性不同,直接返回-1)定义dfs(i, j):i表示考虑第i个位置不同,j表示在先前的过程中是否有位置使用了操作1进行翻转(0:没有, 1:有),其返回值就是所需的最小代价。一种错误思路:直接贪心。
2023-10-08 16:02:43
138
1
原创 Leetcode801. 使序列递增的最小交换次数
令a1 = nums1[i-1], a2 = nums1[i], b1 = nums2[i-1], b2 = nums2[i]当上述两点同时满足时,取其中更小值。初刷时间:2023.9.27。只需要考虑相邻元素的大小关系。
2023-09-27 10:51:21
54
原创 《网络是怎样连接的》阅读笔记——第1章 浏览器生成信息
如果只有GET、POST方法,就只能从Web服务器中获取网页数据,以及将网页输入框中的信息发送给Web服务器,而有了PUT和DELETE方法,就能够从客户端修改或者删除Web服务器上的文件了。将服务器名称和IP地址进行关联是DNS最常见的用法,但DNS的功能并不仅限于此,它还可以将邮件地址和邮件服务器进行关联,以及为各种信息关联相应的名称。将负责管理下级域的DNS服务器的IP注册到它们的上级DNS服务器中,然后上级DNS服务器的IP地址再注册到更上一级的DNS服务器中,以此类推。
2023-09-26 14:59:07
59
原创 《C++ Primer》阅读笔记——第17章 标准库特殊设施
当定义一个tuple对象时,需要指出每个成员的类型tuple的默认构造函数会对每个成员进行值初始化也可以为每个成员提供初始值,这个构造函数是explicit的,必须使用直接初始化语法make_tuple函数使用初始值的类型来推断tuple的类型访问tuple的成员一个tuple类型的成员数目是没有限制的get标准库函数模板,尖括号中的值必须是一个整型常量表达式如果不知道一个tuple准确的类型细节信息,可以使用两个辅助类模板来查询tuple成员的数量和类型// tuple中数据个数。
2023-09-25 15:00:23
65
1
原创 Leetcode周赛364总结
这里的dfs,可以用记忆化搜索优化,考虑dfs(x, fa)先用埃式筛把[1, n]范围内的质数筛出来。解题代码: (TLE 921/922)解题思路(赛时错误思路)
2023-09-25 09:51:24
91
1
原创 Leetcode460.LFU缓存
核心思路是,用一个se按照cnt和time从小到大的顺序t维护当前cache中各元素,需要进行替换时直接替换set首迭代器位置的元素。初刷时间:2023.9.25。
2023-09-25 09:10:59
69
1
原创 Leetcode2508.添加边使所有节点度数都为偶数
如果是4个,则将这4个点两两组合共有3种组合方法,分别检查各边在不在集合中,只有两条边均不在时返回true。如果是2个,则可能存在两种连接情况。初刷时间:2023.9.22。其余情况都返回false。
2023-09-22 16:25:53
79
1
原创 《C++ Primer》阅读笔记——第2章 变量和基本类型
对象:一块能存储数据并具有某种类型的内存空间在同一条定义语句中,可以用先定义的变量值去初始化后定义的其他变量在C++中,初始化和复制是两个完全不同的操作初始化的含义是创建变量时赋予其一个初始值赋值的含义是把对象的当前值擦除,以一个新值来代替列表初始化当用于内置类型的变量时,如果使用列表初始化且初始值存在丢失信息的风险,则编译器将报错默认初始化定义变量时没有指定初值,就会被默认初始化,被赋予了默认值如果是内置类型的变量,它的值由定义的位置决定定义于任何函数体之外的变量被初始化为0。
2023-09-22 16:22:54
63
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人