假设我有一个算法A
,它是2种算法A1
和A2
的组合。
算法A
包括执行算法A1
和A2
一个接着。算法A
的输入分别是长度为m
和n
的 2个数组。
算法A1
的目标是修改 2个数组。总体而言,A1
的空间复杂度为O(m^2 + n^2)
。
然后将修改后的数组发送到A2
。而且我不需要算法A1
占用的辅助空间。 A2
的空间复杂度为O(mn)
。
那么整个算法(A1+A2
)的整体空间复杂度应该是多少?它应该只是O(m^2 + n^2 + mn)
吗?
然而,A1
和A2
占用的空间不会同时发生,空间复杂性完全是关于某个时间点占用的最坏情况空间。那么编写O(max(m^2+n^2,mn))
是否更合适?
答案 0 :(得分:1)
从某种意义上说,你是对的,整体的空间复杂度应该是O(m^2 + n^2 + mn)
。但是,自mn < max(m^2, n^2)
以来,您可以将其删除,并将其写为O(m^2 + n^2)
。