对于给定问题,时间和空间的复杂性存在一些困惑:
给出大小为 N 的数组,返回前 K 个常见元素的列表。
基于最受欢迎的解决方案:
K是输入中唯一元素的数量。
时空复杂度为:O(K)和O(K * log(K)
现在混乱从这里开始。我们知道在上述分析中我们正在处理最坏情况的复杂性。因此,当数组中的所有元素都是唯一的时,K可以取的最差值是N。
因此K <=N。因此O(K)表示为O(N)??
因此,对于上述问题,时空复杂度不应该是O(N)和O(N * log(N))吗?
我知道这是一种技术,但它困扰了我一段时间。请指教。
答案 0 :(得分:1)
是的,自K<N
以来,您是对的,哈希映射部分的时间复杂度应为O(N)
。
但是堆中仅包含K个元素,并且其时间复杂度为O(Klog(K))
,如果渐近地考虑,其时间复杂度远大于O(N)
的线性复杂度,因此最终的时间复杂度为{{1} }。