user3437460:
Me encontré con esta pregunta por el momento O grande complejidad de este fragmento de código: Se garantiza que la complejidad del tiempo para el siguiente código es 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?
Mi pregunta : ¿Por qué es O (n ^ 4) en vez de O (n ^ 3)?
k5_:
list
tiene sobre n^2/2
las entradas [*], por lo que la búsqueda list.contains(i*j)
es O(n^2)
que noO(n)
*: Algunos menos, porque los duplicados no se agregan, pero creo que lo suficiente para contar como n^2