欢迎光临散文网 会员登陆 & 注册

复盘|第321场周赛

2022-11-29 20:30 作者:UCLmsc  | 我要投稿

找出中枢整数

【公式】等差数列求和公式1-x 是 x(x + 1)//2,x-n是(n(n + 1) - x(x - 1)) // 2,两式相等.

追加字符以获得子序列

【双指针+贪心】贪心思想,双指针遍历s和t,t[j]应匹配i尽量小(但大于上一个的匹配的位置)的s[i]。

从链表中移除节点

【递归】递归本质就是在倒着遍历链表。定义递归函数返回的头节点是最大值,比较当前head和处理完的head.next,如果后面大,就保留后面。如果前面大那无事发生,把head接到后面的部分上。

统计中位数为 K 的子数组

【前缀和思想】先推导,奇数长度时(偶数长度时加一),小于k的个数(+1)=大于k的个数 等价转换 左侧小于k的个数 + 右侧小于k的个数(+1) = 左侧大于k的个数 + 右侧小于k的个数,移项,左侧小于k的个数 - 左侧大于k的个数(+1) = 右侧大于k的个数 - 右侧小于k的个数。小于k的数看成-1,大于k的数看成1,k看成0。设k的下标为pos,k为子数组的中位数,等价于:1.子数组包含下标pos;2.子数组的元素和等于0或1。统计子数组nums[pos:i]中比k大的数的个数,减去比k小的数的个数,记作c_i。用哈希表cnt统计c_i的个数。然后对于子数组nums[i:pos],统计比k小的数的个数,减去比k大的数的个数,记作c。对于每个i:[cnt_ci]]就是符合条件的奇数长度子数组的个数;cnt[c_i + 1]就是符合条件的偶数长度子数组的个数。累加个数,即为答案。代码中cnt[0] = 1是存了k。


复盘|第321场周赛的评论 (共 条)

分享到微博请遵守国家法律