Я пытаюсь понять временные сложности алгоритмов и столкнулся с этой проблемой. Проблема заключается в вычислении суммы интервала (0 < = k < = length_of_list).Сложность временного интервала
public static void main(String args[]){
LinkedList<Integer> l=new LinkedList<Integer>();
l.add(4);
l.add(2);
l.add(3);
l.add(1);
l.add(5);
int k=2;
List result = new ArrayList();
int n = l.size();
for(int i = 0; i < n; i++){
if(i >= k-1){
int sum = 0;
for(int j = i; j >= i-k+1; j--){
sum += in.get(j);
}
result.add(sum);
}
}
System.out.println(result);
}
Может ли кто-нибудь объяснить мне временную сложность вышеуказанного кода? Это n * k или n^2 (так как максимальное значение k равно n). Влияет ли условие на временные сложности?
Спасибо. Это очень помогло мне. – user1092
Означает ли это, что наилучшим случаем является O (n) (при k ~ n), а наихудший случай - O (n * k) (при k << n). – user1092
@ user1092: ваш код O (n * k), но существует чистое решение O (n) без значения k. – algojava