2671.频率跟踪器
链接:2671.频率跟踪器
难度:Medium
标签:设计、哈希表
简介:请你设计并实现一个能够对其中的值进行跟踪的数据结构,并支持对频率相关查询进行应答。
题解 1 - python
- 编辑时间:2024-03-21
- 执行用时:374ms
- 内存消耗:81.89MB
- 编程语言:python
- 解法介绍:利用两个dict记录数量和频率。
class FrequencyTracker:
def __init__(self):
self.freq_map = {}
self.cnt_map = {}
def del_freq(self, freq: int, number: int):
if freq in self.freq_map and number in self.freq_map[freq]:
self.freq_map[freq].remove(number)
if not len(self.freq_map[freq]): del self.freq_map[freq]
def add_freq(self, freq: int, number: int):
if freq not in self.freq_map: self.freq_map[freq] = set()
if number not in self.freq_map[freq]: self.freq_map[freq].add(number)
def add(self, number: int) -> None:
if number not in self.cnt_map: self.cnt_map[number] = 0
self.del_freq(self.cnt_map[number], number)
self.cnt_map[number] += 1
self.add_freq(self.cnt_map[number], number)
def deleteOne(self, number: int) -> None:
if number not in self.cnt_map: self.cnt_map[number] = 0
self.del_freq(self.cnt_map[number], number)
if self.cnt_map[number] > 0:
self.cnt_map[number] -= 1
self.add_freq(self.cnt_map[number], number)
def hasFrequency(self, frequency: int) -> bool:
return frequency in self.freq_map