for (int i = 1, s = 0; i <= n; ++i) { int t = 1; for (int j = 1; j <= i; ++j) t = t * j; s = s + t; }
O(n)
O(n*logn)
O(n^2)
O(n^3)
执行次数分别为1 2 3 ... n
所以总的执行次数是1到n的和,为n*(1+n)/2,时间复杂度是O(n^2)
这道题你会答吗?花几分钟告诉大家答案吧!
扫描二维码,关注牛客网
下载牛客APP,随时随地刷题
时间复杂度只跟循环有关,跟常数级操作无关。因为时间复杂度是取数量级的,而不是具体计算次数。所以这个程序的时间复杂度等价于:
for (int i = 1; i <= n; ++i)
for (int j = 1; j <= i; ++j)
这两层循环,外层执行n次,内存平均执行n/2次,时间复杂度为O(n^2)