第 239 场周赛
到目标元素的最小值
签到题将字符串拆分为递减的连续值
这一题没有通过很可惜了,问题在于错误理解了INT
的最大值的含义,在二进制表示中INT
的最大值是32位
的,而在十进制中,INT的最大值是2147483647
,只有10位
,题目给的字符串长度最大是20
位包含每个查询的最小区间
排序+事件查询,不会做,看完题解之后直呼amazing…
做这一题关键在于要想到先排序,然后再思考怎么排序…值得日后多多品位…
第 240 场周赛
人口最多的年份
开数组+暴力 = 签到题标对中的最大距离
两个数组 + 非递增 = 双指针子数组最小乘积的最大值
做题的时候采用的是常规dp做得,会超时,O(n^2)
这题的最优解是单调栈+前缀和,单调栈是我的薄弱点,做得题不多,日后要加强。
首先题目中的关键信息是最小值,一般来说,遇到最小值,最大值这样的,单调栈是一个思考的方向。有向图中最大颜色值
很经典的拓扑排序的题,逻辑并不难,只要熟练掌握拓扑排序即可写出来。
之前完全没有写过关于拓扑排序的代码,对拓扑排序只停留再理论上,所以这次自然没做出来。
第 52 场双周赛
将句子排序
字符串处理,签到题增长的内存泄露
简单的模拟即可,一开始原以为有什么规律,耽误了一点时间。旋转盒子
同样的模拟即可,先对二维数组旋转,然后判断每一个石子的位置是否需要处理,每次处理一步,处理完之后再递归调用判断函数是否对处理后的位置还需要处理。向下取整数对和
找规律+统计
第 241 场周赛
找出所有子集的异或总和再求和
dfs 递归枚举所有子集,回溯算法好久没写了,有点不熟练了、、、尴尬构成交替字符串需要的最小交换次数
找规律 + 统计
这一题属实把我整懵圈了,思维还是不够,没有想到最后的接替字符串结果只有两个(一个以0打头,一个以1打头)
如果想到这一点还是可以做出来的找出和为指定值的下标对
哈希map直接解决即可,变相的一维dp,贼简单,注意两个数组的长度是不一致,所以选择不同的数组存储信息会影响复杂度。
由于先做得第二题,第三题没来得及看,亏了。恰有 K 根木棍可以看到的排列数目
一开始的思路是 回溯法+动态规划 (先用回溯法求全排列,再用动态规划求k个方案数) 时间复杂度O(nn!)复杂度爆炸。
答案给的是二维动态规划
用 dp[i][j] 表示长度为 1,2,⋯,i 的木棍且可以可以看到其中的 j 根木棍的方案数
状态转移方程为:dp[i][j] = dp[i-1][j-1] + dp[i-1][j](i-1)
复杂度为O(nk)
第 242 场周赛
哪种连续子字符串更长
签到题,一次遍历即可,遍历的过程中动态更新1
串和0
串的长度即可。准时到达的列车最小时速
二分查找基础题,没有难度跳跃游戏 VII
使用了双指针模拟,一个min指针指向最短到达的位置,一个max指针指向最远到达的地方,然后通过了 119/123个测试用例,醉了
这道题有两种解法:
- 前缀和+动态规划
- 滑动窗口+动态规划
- 石子游戏 VIII
前缀和+逆序动态规划
第 254 场周赛
作为子字符串出现在单词中的字符串数目
签到题,考点是字符串的匹配。题解给了KMP算法,比赛应该没人用KMP吧。。。调接口实现只需要几行代码就好了。。。构造元素不等于两相邻元素平均值的数组
这道题想出来了,但是没有完全想出来。
因为没有完全想出来所以想了一个回溯算法,类似全排列。。。很尴尬
最后还是用一开始的思路写出来了
此处有一处坑需要注意:
1 | double curr = ((double)nums[i-1]+(double)nums[i+1])/2; |
这两行代码得到的 curr
的值有时候是不一样的。。。。
- 数组元素的最小非零乘积
这题做不出来。
题解:数学推导+快速幂运算
- 你能穿过矩阵的最后一天
二分查找 + 广度优先搜索