为什么字典的时间复杂度On不是O1

问题描述

removeValueForKey

复杂度:O(n),其中n是字典中键-值对的数量

如上所示,removeValue(forKey key: Key)时间复杂度是O(n)而不是O(1)。为什么?

解决方法

由于Dictionary的值语义。删除键值对可能需要复制数据,使其成为O(N)操作。

,

如果您查看removeValue()的源代码,则可以看到它使用了sureUnique()函数,如果该项不是唯一的,因此其复杂度为O(n),该函数将创建哈希图的副本。 )