1. 解题思路
这一题的话思路上比较直接的就是用一个counter来记录每一次操作时各个值的freq变化,然后用另一个有序数列来记录当前所有的freq的值即可。
然后,每一次操作时,我们都更新这个counter和这个有序数列,就能直接获得对应的最大freq结果了。
2. 代码实现
给出python代码实现如下:
class Solution:
def mostFrequentIDs(self, nums: List[int], freq: List[int]) -> List[int]:
cnt = defaultdict(int)
scnt = [0 for _ in set(nums)]
ans = []
for x, f in zip(nums, freq):
c = cnt[x]
cnt[x] += f
scnt.pop(bisect.bisect_left(scnt, c))
bisect.insort(scnt, c+f)
ans.append(scnt[-1])
return ans
提交代码评测得到:耗时2965ms,占用内存42.7MB。