如何在数组中查找重复元素?我有一组电话号码,因此在电话号码中,我应该从右侧到左侧开始搜索,并找到相似的6个整数。那我应该把它们打印出来。
要查找重复项,可以按电话号码建立交叉引用,然后将其过滤为仅重复项。例如,考虑:
let contacts = [
Contact(name: "Rob", phone: "555-1111"),
Contact(name: "Richard", phone: "555-2222"),
Contact(name: "Rachel", phone: "555-1111"),
Contact(name: "Loren", phone: "555-2222"),
Contact(name: "Mary", phone: "555-3333"),
Contact(name: "Susie", phone: "555-2222")
]
在Swift 4中,您可以使用以下命令构建交叉引用字典:
let crossReference = Dictionary(grouping: contacts, by: { $0.phone })
要么
let crossReference = contacts.reduce(into: [String: [Contact]]()) {
$0[$1.phone, default: []].append($1)
}
然后,找到重复项:
let duplicates = crossReference
.filter { $1.count > 1 } // filter down to only those with multiple contacts
.sorted { $0.1.count > $1.1.count } // if you want, sort in descending order by number of duplicates
显然,请使用对您有意义的任何模型类型,但是上面的模型使用以下Contact
类型:
struct Contact {
let name: String
let phone: String
}
有很多方法可以实现此目的,因此我将不再关注上述实现细节,而是关注以下概念:通过某个键(例如电话号码)构建交叉引用原始数组,然后将结果过滤为那些具有重复值的键。
听起来您想将反映重复项的结构扁平化为单个联系人数组(我不确定为什么要这么做,因为您丢失了标识彼此重复的结构),但是如果您想这样做,可以flatMap
:
let flattenedDuplicates = crossReference
.filter { $1.count > 1 } // filter down to only those with multiple contacts
.flatMap { $0.1 } // flatten it down to just array of contacts that are duplicates of something else
问题内容: 我被困在以下程序中: 我有一个输入整数数组,其中只有一个非重复数,例如{1,1,3,2,3}。输出应显示非重复元素,即2。 到目前为止,我执行了以下操作: 最好限制阵列中的解决方案。避免使用集合,地图。 问题答案: 由于几乎可以肯定这是一种学习练习,并且由于您非常接近正确完成它,因此需要进行以下更改才能使其正常工作: 将声明 __移到 外部循环 内部 -需要将标志设置为外部循环的每次迭
问题内容: 快速找到整数数组总和的最简单(最佳)方法是什么?我有一个称为倍数的数组,我想知道倍数的总和。 问题答案: 这是我能找到的最简单/最短的方法。 Swift 3和Swift 4: 斯威夫特2: 更多信息: 这使用了Array的reduce方法(在此处提供文档),该方法允许您“通过递归应用所提供的闭包将元素的集合减少到单个值”。我们给它0作为初始值,然后本质上给闭包赋值。当然,我们可以将其简
在swift中查找整数数组和的最简单(最好)方法是什么?我有一个叫做multiples的数组,我想知道multiples的和。
问题内容: 如今,在Swift中,您只需键入 以使数组唯一。(或根据需要订购)。 在此之前,它是怎么做的? 我可能有一个如下所示的数组: 或者,实际上,是数据的相似类型部分的任何序列。我要做的是确保每个相同元素中只有一个。例如,上面的数组将变为: 请注意,删除了2、6和15的重复项以确保每个相同元素中只有一个。Swift是否提供一种轻松实现此目的的方法,还是我必须自己做? 问题答案: 您可以自己滚
问题内容: 假设我有一个整数的NumPy数组,如下所示: 我想找到数组的开始和结束索引,其中值的值大于重复的x倍(例如5倍)。因此,在上述情况下,其值为22和6。重复的22的开始索引为3,结束的索引为8。重复6相同。Python中是否有特殊的工具对您有所帮助?否则,我将遍历数组索引以获取索引,并将实际值与前一个进行比较。 问候。 问题答案: 使用@WarrenWeckesser在此处给出的和方法来