user3437460:
私はこのコードスニペットのビッグO時間の複雑さのために、この質問に出くわした:次のコードのための時間複雑性はO(N ^ 4)であることが保証されています。
ArrayList<Integer> list = new ArrayList<Integer>();
for(int i = n; i>=1; i--) //n
for(int j = 1; j<=i; j++) //n
if(!list.contains(i*j)) //n?
list.add(i*j); //1?
私の質問:なぜ、代わりにO(N ^ 3)のそれはO(N ^ 4)ですか?
k5_:
list
約持っているn^2/2
エントリ[*]、そのルックアップがlist.contains(i*j)
ありO(n^2)
ませんO(n)
*:いくつかはあまり重複が追加されていないので、私はとしてカウントするのに十分な推測します n^2