开辟两个数组都初始化为0,一个存储number加减时次数的改变,另一个数组存储频率。由于加减是用户随机调用,所以在进行频率存储时,可将number上一次在另一个数组存储的频率清为0再进行存储。
class FrequencyTracker {
public:
FrequencyTracker() {
}
int a[100001]={0};
int b[100001]={0};
int t=0;
void add(int number) {
b[a[number]]-=1; //清空number原来存储的频率
++a[number]; //number频率加1
b[a[number]]+=1; //重新对number进行存储
}
void deleteOne(int number) {
if(a[number]==0) //number不存在不需要删除
return;
b[a[number]]-=1;
--a[number];
b[a[number]]+=1;
}
bool hasFrequency(int frequency) {
if(b[frequency]!=0) //若为0说明没出现这个频率
return true;
return false;
}
};