1
私はアルゴリズムの時間の複雑さを理解しようとしており、この問題に遭遇しました。問題は、区間合計を計算することです(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)ですが、k値を考慮しない純粋なO(n)解が存在します。 – algojava