文章

LeetCode周赛记录

LeetCode 391 周赛

序号

题目

Tag

简易总结

1

哈沙德数

数位 + 模拟

2

换水问题 II

暴力模拟

时间复杂度 \sqrt{n}

3

交替子数组计数

枚举端点

对于子数组来说,枚举端点然后求和

4

最小化曼哈顿距离

切比雪夫距离

(x,y)=(x+y,y-x)

LeetCode 127 双周赛

序号

题目

Tag

简易总结

1

或值至少 K 的最短子数组 I

暴力

刚开始想和第三道一起做,消耗了时间

后面其实先暴力再思考的

2

得到更多分数的最少关卡数目

前缀和+枚举

感觉应该是easy

3

或值至少为 K 的最短子数组 II

滑动窗口

 for (int i = 0; i < 31; i++) {
                    int v = 1 << i;
                    if ((v & num) != 0) {
                        map.put(i, map.getOrDefault(i, 0) + 1);
                    }
                }

4

求出所有子序列的能量和

记忆化搜索

暴力枚举复杂度

C_n^k 假设是 C_{50}^{25} = 15504000

LeetCode 390 周赛

全部AC 排名283纪念

序号

题目

Tag

简易总结

1

每个字符最多出现两次的最长子字符串

暴力/滑动窗口

考虑到数量级,且是easy,所以暴力

2

执行操作使数据元素之和大于等于 K

模拟

先增后复制 暴力即可

3

最高频率的 ID

模拟

TreeMap

4

最长公共后缀查询

模拟

倒序字典树

LeetCode 389 周赛

LeetCode 126 双周赛

序号

题目

Tag

简易总结

1

求出加密整数的和

模拟

2

执行操作标记数组中的元素

模拟

注意Arrays.stream(nums).sum()

返回结果不是long,long会溢出。

3

替换字符串中的问号使分数最小

模拟

TreeSet需要手动移除,然后加入才会重排序

4

求出所有子序列的能量和

😅

子序列定义:不改变顺序,可删除一定元素

需要多刷一些子序列问题~

LeetCode 388 周赛

序号

题目

Tag

简易总结

1

重新分装苹果

模拟

2

幸福值最大化的选择方案

模拟

3

数组中的最短非公共子字符串

模拟

需要先写出伪代码,计算出时间复杂度。

4

K 个不相交子数组的最大能量值

dp

划分型DP,需要多练~

LeetCode 387 周赛

序号

题目

Tag

简易总结

1

将元素分配到两个数组中 I

模拟编写

2

元素和小于等于 k 的子矩阵的数目

矩阵求和

3

在矩阵上写出字母 Y 所需的最少操作次数

模拟

先定义好变量,然后手写出边界条件,再开始开发。

4

将元素分配到两个数组中 II

模拟+线段树

数据范围和数量差距时可以离散化

对于求数量可以采用线段树或者树状数组