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

如何以Pythonic方式找出k个集合中n个集合的最大交集元素

找出多个子集间的最大交集(k个集合中n个集合的最常见元素)

高效解决思路

要找出10个集合中所有9个集合组合的交集,无需暴力枚举所有可能的9集合组合。核心逻辑:如果一个元素出现在9个集合里,那它仅缺席1个集合——不管去掉哪个包含它的集合,它都会留在剩下的9个集合的交集中。因此我们只需要统计每个元素在所有集合中的出现次数,筛选出出现次数等于「总集合数-1」的元素即可。

Python实现代码

from collections import Counter

# 把所有集合整理到列表中(原问题里set_3未定义,这里按给出的集合汇总)
all_sets = [
    {0, 3, 4},       # set_0
    {1, 3, 4},       # set_1
    {1, 5, 23, 8, 24},# set_2
    {1, 2, 6, 10},   # set_4
    {1, 60, 34, 2},  # set_5
    {1, 45, 32, 4},  # set_6
    {1, 6, 9, 14},   # set_7
    {1, 56, 3, 23},  # set_8
    {1, 34, 23, 3}   # set_9
]

# 统计每个元素在集合中的出现次数
element_count = Counter()
for s in all_sets:
    element_count.update(s)

# 筛选出仅缺席1个集合的元素(对应原问题的9个集合场景,找出现8次的元素)
target_elements = [elem for elem, cnt in element_count.items() if cnt == len(all_sets) - 1]

print(target_elements)  # 输出: [1]

代码说明

  • 用collections.Counter统计元素出现次数,时间复杂度为O(M)(M是所有集合的元素总数),远优于暴力枚举组合的低效方式。
  • 筛选条件cnt == len(all_sets)-1精准匹配了「出现在n-1个集合中」的要求,刚好对应问题中找9个集合交集的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 01:13:59