私は私の大きなoの計算をブラッシュアップしようとしています. すべてのアイテムを 'i' 2 スペースの右側にシフトする関数がある場合、次のような数式があります。
(n -1) + (n - 2) + (n - 3) ... (n - n)
最初の反復で (x-1) 項目、2 番目の (x-2) 項目などを移動する必要がある場合... メソッド:
int[] s = {1,2,3,4, , }
public static char[] moveStringDownTwoSpaces(char[] s){
for(int j = 0; j < s.length; j++){
for(int i = s.length-3; i > j; i--){
s[i+2] = s[i];
}
return s;
}
}
これが O(n^2) であることはわかっていますが、これを変換する背後にある数学がよくわかりません。
(n -1) + (n - 2) + (n - 3) ... (n - n)
これに
O(n^2)
n = 5 (文字列の長さは 5) の場合、私の考えでは...
(5-1) + (5-2) + (5-3) + (5-4) + (5-5) = 5(5 - ???)
これは
(n-1) + (n-2) + (n-3) + (n-4) + (n-5) = n(n - ???)
これにより、5*5 = 25 (n^2) が得られます。しかし、???とは何ですか?式の変数に何を入れたらよいかわかりません。私がこれを正しい方法で行っているかどうかさえわかりません。AKA私は数学を行う方法を忘れました:(