从集合初始化数组是否具有复杂性,如果是,它是什么?

时间:2019-06-20 20:15:08

标签: swift time-complexity complexity-theory

迅速:选项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),所以我想知道第二个选项是否具有复杂度,如果是,则是什么?

1 个答案:

答案 0 :(得分:1)

您所做的几乎与Set所做的一样。 Set<T>几乎只是[T: Void](又称Dictionary<T, Void>)。

两个示例的时间和空间复杂度均为O(arrayWithDuplicates.count)