我在理解时间复杂性方面遇到了麻烦。人们可以查看算法并直接说出它的时间复杂度,但我不能做得那么好。
考虑两个n * n
矩阵(A
和B
)。它们的乘法结果为C
。
因此,C11
的值由n次乘法和n-1次加法组成。为什么它的时间复杂度为O(n^3)
?我会说O(n^2)
。
有人能用可理解的语言解释吗?我知道什么是theta,我知道什么是大O,但我不能实现这些东西。
如果你提供另一个类似于上面的简单例子,那将非常感激。
答案 0 :(得分:3)
简单地说,您的矩阵C具有n x n
个单元格,这需要对所有单元格执行n^2
个操作。单独计算每个单元格(如c11
)需要n
次操作。因此总共需要O(n^3)
时间复杂度。
你说计算C中的单元格(如c11
)需要n^2
并不正确。计算c11需要的是从1循环到n(在纸上写下来,你会看到),这是O(n)
时间复杂度。
实践变得完美。只是尝试更多的问题,你会擅长它。此外,Facebook还有一个名为codelab的面试准备工具,供您改进相关内容。
希望这有帮助!