You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python的Set判断数组中各元素是否重复并输出指定结果

解决思路与实现方案

你的需求是遍历数组中的每个元素,若当前元素之前已经出现过则输出YES,否则输出NO(对应示例输出逻辑)。针对这个需求,这里提供两种高效的实现方式:

方法一:使用集合记录已遍历元素(最优解,时间复杂度O(n))

利用集合的O(1)查找特性,遍历数组时实时记录已经见过的元素,判断当前元素是否重复出现:

a = [int(v) for v in input().split()]
seen = set()
for num in a:
    if num in seen:
        print("YES")
    else:
        print("NO")
        seen.add(num)

运行示例输入1 2 3 2 3 4,会输出:

NO
NO
NO
YES
YES
NO

完全符合你的示例要求。

方法二:统计元素总出现次数,结合遍历计数

先统计每个元素在数组中的总出现次数,再遍历数组记录每个元素的当前出现次数,当总次数>1且当前是第二次及以后出现时输出YES:

from collections import Counter

a = [int(v) for v in input().split()]
counts = Counter(a)
current = {}
for num in a:
    current[num] = current.get(num, 0) + 1
    if counts[num] > 1 and current[num] > 1:
        print("YES")
    else:
        print("NO")

关于你原来思路的问题

你提到的Set确实无法统计元素出现次数,因为Set的特性是仅存储唯一元素。而a.count(a[i])的方式每次调用都会遍历整个数组,时间复杂度是O(n²),当数组规模较大时效率会很低,不推荐使用。

内容的提问来源于stack exchange,提问作者Codeer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 16:16:03