Swift 与多个数组相交

Ram*_*Ram -1 arrays intersection

我有一个数组的数组,大小是动态的,我想找到A中的公共元素。

A = [ [1,2,3], [2,4,6,1], [3,6,2,1], [1,1,1],.. ]。

对于上面的数组 A,公共元素是 1

我如何以有效的方式实现?我可以循环查找,但我想知道最有效的解决方案?

Luc*_*tti 6

给定一个数组数组

let lists = [[1,2,3], [2, 3, 4], [3, 4, 5]]
Run Code Online (Sandbox Code Playgroud)

你可以找到常见的元素写作

let firstList = lists.first ?? []

let commonElements = lists.reduce(Set(firstList)) { (result, list)  in
    result.intersection(list)
}
Run Code Online (Sandbox Code Playgroud)

结果

print(commonElements) // [3]
Run Code Online (Sandbox Code Playgroud)