复盘|第302场周赛
数组能形成多少数对
【哈希表】统计每个元素的出现次数,两两一对,得到对数。用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的元素数量。

