您将得到一些查询。每个查询都有以下两个整数形式:
1.将x插入数据结构中。 2.如果存在,则从数据结构中删除y的一个实例。 3.检查是否存在任何出现频率正好为y的整数。如果是,则打印1,否则打印0。
示例输入:
queries = [(1,1),(2,2),(3,2),(1,1),(1,1),(2,1),(3,2)]
问题相当明显,我认为我有一个不错的解决方案:
循环遍历查询,并根据需要增加和减少每个数字的频率在字典中 ......同时,在另一个字典中跟踪其他字典键出现的次数
对于查询3的检查,如果存在频率恰好为y的任何整数,则应检查第二个字典中y的计数是否存在...
我通过了大部分测试用例,但是有些测试用例失败了...有人可以解释我的思路有什么缺陷吗?
1.将x插入数据结构中。 2.如果存在,则从数据结构中删除y的一个实例。 3.检查是否存在任何出现频率正好为y的整数。如果是,则打印1,否则打印0。
示例输入:
queries = [(1,1),(2,2),(3,2),(1,1),(1,1),(2,1),(3,2)]
问题相当明显,我认为我有一个不错的解决方案:
循环遍历查询,并根据需要增加和减少每个数字的频率在字典中 ......同时,在另一个字典中跟踪其他字典键出现的次数
对于查询3的检查,如果存在频率恰好为y的任何整数,则应检查第二个字典中y的计数是否存在...
我通过了大部分测试用例,但是有些测试用例失败了...有人可以解释我的思路有什么缺陷吗?
def freqQuery(queries):
frequency = {}
results = []
frequencyValues = {}
for query in queries:
q = query[0]
val = query[1]
if q == 1:
frequency[val] = frequency.get(val, 0) + 1
freq = frequency[val]
frequencyValues[freq] = frequencyValues.get(freq, 0) + 1
frequencyValues[freq-1] = frequencyValues.get(freq-1, 1) - 1
elif q == 2:
if val in frequency.keys():
frequency[val] += - 1
if frequency[val] < 0:
frequency[val] = 0
freq = frequency[val]
frequencyValues[freq + 1] = frequencyValues.get(freq + 1, 1) - 1
frequencyValues[freq] = frequencyValues.get(freq, 1) + 1
elif q == 3:
if val in frequencyValues.keys():
if frequencyValues[val] > 0:
results.append(1)
else:
results.append(0)
else:
results.append(0)
return results