Dre*_*rew 2 arrays big-o ios swift
我在查看enumerated()有关该Array类型的文档时,发现它说:
复杂度:O(1)
https://developer.apple.com/documentation/swift/array/1687832-枚举
这似乎没有意义,因为遍历数组将是线性时间O(n)--因为数组的长度未知。enumerated()将必须遍历数组才能返回EnumeratedSequence。这个函数如何保持时间复杂度?
创建一个EnumeratedSequence要初始化其迭代器。后者分两个步骤完成:
enumerated()。_count为0完成这两个步骤所需的时间不会随集合/序列中元素的数量而变化。
遍历an的元素EnumeratedSequence等效于调用.next()的迭代器EnumeratedSequence。let result = (offset: _count, element: b)只要基集合/序列中有元素(因此产生了guard语句),它就会(按需)创建一个元组,并递增_count += 1。
概括一下:创建一个枚举序列是O(1),但是遍历所有元素当然是O(n)。
| 归档时间: |
|
| 查看次数: |
72 次 |
| 最近记录: |