【发布时间】:2018-08-18 12:32:11
【问题描述】:
我遇到了这个代码 sn-p 的大 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^4) 而不是 O(n^3)?
【问题讨论】:
-
n初始化为什么? -
@JanusVarmarken 这是完整的问题。
n是什么来确定大 O 无关紧要...您可以假设它是大于 1 的某个数字。 -
我怀疑这可能是由于
add造成的,因为 arraylist 由数组支持,该数组在填充时会加倍,并且所有元素都必须复制到新数组中。 -
但是,这只会在 n 上添加另一个常量(因为
if不是looping在add周围)。
标签: java time-complexity big-o