我正在努力复习我的大计算。如果我有将所有项目移动到 'i' 2 个空格右侧的函数,我有一个看起来像这样的公式:
(n -1) + (n - 2) + (n - 3) ... (n - n)
第一次迭代我必须移动(x-1)个项目,第二个(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。但什么是???我不知道该为公式中的变量添加什么。我什至不知道我是否会以正确的方式进行。又名我忘了怎么做数学:(