在程序中,我使用两种数据结构
1:大小为k的指针数组,每个指针指向一个链接列表(因此,总'k'列表)。所有列表中的节点总数= M ... ..(类似于使用单独链接进行散列,k是固定的,M可以变化)
2:另一个大小为M的整数数组(其中M =上面的节点数)
问题是:该计划的整体空间复杂性是多少?它是下面的东西吗?
第一部分:O(k + M)或只是O(M)...。我猜是正确的!
第二部分:O(2M)或只是O(M)......再次正确吗?
总体O(k + M)+ O(2M)==> O(max(k + M,2M) 或者只是O(M)?
请帮忙。
答案 0 :(得分:0)
第一部分:O(k + M)不正确,只是O(M)
第二部分:O(2M)不正确,因为我们没有按顺序使用常数所以正确的是O(M)
总体O(M)+ O(M)==> O(M)。
答案 1 :(得分:0)
两种情况都是正确的。但是从O(k+M) = O(M)
开始,假设k
不变,每个人都会使用最简单的符号,即O(M)。
对于第二部分,单个数组是O(M)。
总的来说,它是O(k+M+M) = O(max(k+M,2M)) = O(M)
(我们可以"忘记"在大O符号中的乘法和加法常数 - 除非你是在恒定的时间内。)
提醒g(x) = O(f(x))
iff 存在x0
和c
,x>x0
暗示g(x) >= c.f(x)