我正在学习算法,并在顶级编码器中偶然发现了这篇文章。
这是article
的示例int result=0; // 1
for (int i=0; i<N; i++) // 2
for (int j=i; j<N; j++) { // 3
for (int k=0; k<M; k++) { // 4
int x=0; // 5
while (x<N) { result++; x+=3; } // 6
} // 7
for (int k=0; k<2*M; k++) // 8
if (k%7 == 4) result++; // 9
} // 10
第6行中while循环的时间复杂度显然为O(N) - 执行时间不超过N / 3 + 1次。
我在这里感到困惑,因为作者说时间复杂度是O(N)。对我来说似乎是O(N ^ 4)。请解释一下,我在俯瞰什么。我只是在开始算法。
答案 0 :(得分:1)
第6行的周期的复杂性是O(N)。