因此,我在实习中遇到了编码挑战,其中一部分是确定我的程序的空间和时间复杂性。程序大致如下。
while(A){
int[][] grid;
// additional variables
while(B){ //for loop involves iterating through grid
// additional variables
for(...)
for(....)
}
for(...) //for loop involves iterating through grid
for(....)
}
Run Code Online (Sandbox Code Playgroud)
所以我说的是,程序总体的时间复杂度为 (A N^2+B N^2),因此得出结论,它的摊余时间为 O(N^2)。
至于空间复杂度,我是否应该将所有变量使用的数字空间相加?假设每个变量都是 int,并且循环 A 中有 3 个变量,循环 B 中有 2 个变量,那么空间复杂度是 (A*24 + B*16)?