由于本题不需要我们输出add的number,所以我们无需将他们存储起来。由于题目要求我们判断数据结构中是否存在出现 frequency 次的数字,因此我们可以用两个数组,一个数组num1用于存储该数字出现的次数,add一次,则在num1索引为number的元素++;另一个数组num2则用来存储相同数量的number的个数,有n个number它们存在的数量一样,则在对应数量为索引的元素+n,若number为1和5出现的次数都为3,则使数组索引为3的元素为2。因此当我们添加时,我们要先把num2[num1[number]++]--(n=num1[number]即是number出现的次数,num2[n]--即是把先前对应出现次数为n的number的个数-1(先前可能是2和3都出现了2次,但是现在要add3,即出现2次的就只有2了,所以要--),然后再把number出现的次数n++(也就是说现在3出现了3次了)),再把num2[num1[number]]++(即是把出现n++次的number个数+1,也就是说因为3现在也出现了3次,所以出现3次的number个数要+1);删除时,如果number出现的次数为0,无需操作,否则先把num2[num1[number]--]--,再num2[num1[number]]++;这两步操作跟添加时道理是一样的。
1. 问题描述2. 思路分析由于本题不需要我们输出add的number,所以我们无需将他们存储起来。由于题目要求我们判断数据结构中是否存在出现 frequency 次的数字,因此我们可以用两个数组,一个数组num1用于存储该数字出现的次数,add一次,则在num1索引为number的元素++;另一个数组num2则用来存储相同数量的number的个数,有n个number它们存在的数量一样,则在对应数量为索引的元素+n,若number为1和5出现的次数都为3,则使数组索引为3的元素为2。因此当我们添