迅速:选项1
var dictionaryWithoutDuplicates = [Int: Int]()
for item in arrayWithDuplicates {
if dictionaryWithoutDuplicates[item] == nil {
dictionaryWithoutDuplicates[item] = 1
}
}
print(dictionaryWithoutDuplicates.keys)
// [1,2,3,4]
选项2
let arrayWithDuplicates = [1,2,3,3,2,4,1]
let arrayWithoutDuplicates = Array(Set(arrayWithDuplicates))
print(arrayWithoutDuplicates)
// [1,2,3,4]
对于第一个选项,可能会有更优雅的方法来做到这一点,但这不是我的意思,我只想显示一个复杂度为n的示例。 这两个选项都返回一个没有重复的数组。由于第一个选项的复杂度为O(n),所以我想知道第二个选项是否具有复杂度,如果是,则是什么?
答案 0 :(得分:1)
您所做的几乎与Set
所做的一样。 Set<T>
几乎只是[T: Void]
(又称Dictionary<T, Void>
)。
两个示例的时间和空间复杂度均为O(arrayWithDuplicates.count)
。