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

Swift如何判断是否存在两个集合各包含2个指定主集合的元素

核心实现思路

  • 先将13个待比对的集合存入数组,避免逐个手动判断
  • 遍历数组内的每个集合,计算其与主集合mainSetA的交集元素数量
  • 统计所有交集元素数≥2的集合,只要统计结果≥2就说明符合你要的条件

完整可运行代码

import UIKit

func generateRandomNumber(_ from: Int, _ to: Int, _ qut: Int?) -> [Int] {
    var myRandomNumbers = [Int]()
    var numberOfNumbers = qut
    let lower = UInt32(from)
    let higher = UInt32(to + 1)
    
    if numberOfNumbers == nil || numberOfNumbers! > (to - from) + 1 {
        numberOfNumbers = (to - from) + 1
    }
    
    while myRandomNumbers.count != numberOfNumbers {
        let myNumber = arc4random_uniform(higher - lower) + lower
        let intValue = Int(myNumber)
        if !myRandomNumbers.contains(intValue) {
            myRandomNumbers.append(intValue)
        }
    }
    return myRandomNumbers
}

// 生成主集合,省略了无用的单个card变量声明
let mainSetA = Set(generateRandomNumber(1, 53, 5))
print("主集合元素:\(mainSetA)")

// 13个待比对集合存入数组
let compareSets: [Set<Int>] = [
    [1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12],
    [13, 14, 15, 16], [17, 18, 19, 20], [21, 22, 23, 24],
    [25, 26, 27, 28], [29, 30, 31, 32], [33, 34, 35, 36],
    [37, 38, 39, 40], [41, 42, 43, 44], [45, 46, 47, 48],
    [49, 50, 51, 52]
]

// 筛选符合条件的集合(和主集合交集≥2个元素)
let matchedSets = compareSets.filter { $0.intersection(mainSetA).count >= 2 }

// 判断结果
if matchedSets.count >= 2 {
    print("存在符合要求的集合,共\(matchedSets.count)个,分别是:\(matchedSets)")
} else {
    print("不存在符合要求的集合")
}

逻辑说明

  • intersection是Set自带的取交集方法,直接可以得到两个集合共有的元素
  • 如果你需要具体拿到符合条件的集合的索引或者做其他后续操作,直接遍历matchedSets即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 19:06:04