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

复盘|第84场双周赛

2022-12-29 21:30 作者:UCLmsc  | 我要投稿

合并相似的物品

【模拟】每个元素都是一个长为 2 的列表,所以可以直接作为键值对传入dict,然后通过Counter把值加起来。

统计坏数对的数目

【枚举】1.题目转化为求i<j的(i,j)对数量减掉j - i = nums[j] - nums[i]的数量。2.移项之后,找满足nums[j] - j = nums[i] - i的(i,j)数量(i<j)。总共n(n - 1)/2对,要减掉的数量用哈希表统计。

任务调度器 II

【模拟】按题意模拟,完成任务天数加一,并判断是否需要间隔space天。

将数组排序的最少替换次数

【贪心】1.倒序遍历,假设当前操作出的最小值为m,如果nums[i] > m,则需要拆分nums[i],是的拆分出的数字最大值不超过m。2.假设拆分出x个数字,这x个数字都不超过m,可知x≥ceil(nums[i]/m),为使操作次数最小,x=ceil(nums[i]/m)。3.操作次数k = x - 1。4.为使拆分出的数字最小值尽可能大,可证拆分出的最小数字为nums[i]//x。 [证明]①若这x个数均为nums[i]//x,则有x(nums[i]//x)≤nums[i];②若这x个数均为(nums[i]//x)+1,则有x(1+(nums[i]//x))≥x(nums[i]//x)≥nums[i]联合得到x(nums[i]//x)≤nums[i]≤x(1+(nums[i]//x))。 5.可以给出一个拆分方案,将x个数初始化为nums[i]//x,给其中的nums[i]-x(nums[i]//x)个数字加一,可以使这x个数的和恰好为nums[i].


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

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