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

复盘|第302场周赛

2022-12-27 20:30 作者:UCLmsc  | 我要投稿

数组能形成多少数对

【哈希表】统计每个元素的出现次数,两两一对,得到对数。用ums长度减去对数的两倍就得到剩余数字的个数。

数位和相等数对的最大和

【堆】heap维护前两个最大的元素。

【哈希表 + 一次遍历】手动维护最大两个值。

裁剪数字后查询第 K 小的数字

【直接排序】对每个询问,按照题目要求排序,取第 k小的元素的下标。

【离线 + 增量排序】采用增量排序,每次排序只需要比较单个字符。先将询问按照trim从小到大排序,并按照这一顺序回答询问。随着trim的不断增加,我们可以在排好序的字符串数组的基础上,向每个字符串的前面添加一个对应的字符,由于字符串数组已经是有序的,我们只需要比较这个新增的字符的大小,即可比较整个字符串的大小。

使数组可以被整除的最少删除次数

【排序】元素x若能整除numsDivide的所有元素,等价于x是所有numsDivide[i]的因子,这也等价于x是nums Divide所有元素的最大公因数g的因子。由于要求用nums的最小元素去整除g,不妨将nums排序后,从小到大找到第一个能整除g的元素x,所有小于x的元素都需要删除。

【遍历】不用排序,通过两次遍历得到答案,第一次遍历nums找出能整除最大公约数的最小nums元素a 第二次遍历nums找出nums中小于a的元素数量。


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

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