整数数组重复元素计数结果异常,请求技术支援
解决数组重复数字重复输出的问题
看起来你遇到的核心问题是:当前的checkMultiple()函数会把重复多次的数字每次匹配到都输出一遍,而不是只输出每个重复数字一次对吧?这是因为你可能在遍历数组时,每发现一对重复就立刻打印,而没有做去重处理。
我来给你两种简单的解决思路,不管数字重复多少次,都只会输出一次重复的数字:
方法一:用字典统计出现次数
先遍历数组统计每个数字的出现次数,之后只输出那些出现次数≥2的数字,每个数字仅输出一次:
def checkMultiple(arr): # 创建字典存储每个数字的出现次数 num_counts = {} for num in arr: # 如果数字不在字典里,默认计数0,加1;否则直接加1 num_counts[num] = num_counts.get(num, 0) + 1 # 输出所有重复的数字(出现次数≥2) print("重复的数字:") for num, count in num_counts.items(): if count >= 2: print(num)
比如你测试数组[9,5,2,8,5,9,9],这个函数会输出:
重复的数字: 9 5
方法二:用集合跟踪已发现的重复数字
通过两个集合,一个记录已经遍历过的数字,另一个记录已经确认的重复数字,利用集合自动去重的特性,确保每个重复数字只被记录一次:
def checkMultiple(arr): seen = set() # 记录已经遍历过的数字 duplicates = set() # 记录已经发现的重复数字 for num in arr: if num in seen: # 如果数字已经遍历过,说明是重复的,加入duplicates集合 duplicates.add(num) else: # 第一次遇到,加入seen集合 seen.add(num) # 输出结果 print("重复的数字:") for num in duplicates: print(num)
这个方法的优势是不需要统计具体次数,只要发现重复就记录,而且集合的查询和添加操作效率都很高。
核心逻辑就是先收集所有重复的数字(确保每个只存一次),再统一输出,而不是每发现一次重复就立刻打印。这样不管数字重复2次还是10次,都只会输出一次啦。
内容的提问来源于stack exchange,提问作者Richard Cook
相关产品推荐
相关产品推荐

