问题描述
复杂度:O(n),其中n是字典中键-值对的数量。
如上所示,removeValue(forKey key: Key)
时间复杂度是O(n)而不是O(1)。为什么?
解决方法
由于Dictionary
的值语义。删除键值对可能需要复制数据,使其成为O(N)操作。
如果您查看removeValue()的源代码,则可以看到它使用了sureUnique()函数,如果该项不是唯一的,因此其复杂度为O(n),该函数将创建哈希图的副本。 )
复杂度:O(n),其中n是字典中键-值对的数量。
如上所示,removeValue(forKey key: Key)
时间复杂度是O(n)而不是O(1)。为什么?
由于Dictionary
的值语义。删除键值对可能需要复制数据,使其成为O(N)操作。
如果您查看removeValue()的源代码,则可以看到它使用了sureUnique()函数,如果该项不是唯一的,因此其复杂度为O(n),该函数将创建哈希图的副本。 )