关于第三个思路
来源:2-6 把一个数组旋转 k 步-性能分析

aibo
2024-02-23
老师,我自己算了算
感觉第三个思路应该是:
数组前部分元素index全部 + k;
后部分元素index全部 - (length-k);
不论数组长度是奇数还是偶数;
但实现的时候要创建一个新的空数组重新填充一遍元素,这样的话空间复杂度是不是就算O(n)而不是O(1)了?
感觉第三个思路应该是:
数组前部分元素index全部 + k;
后部分元素index全部 - (length-k);
不论数组长度是奇数还是偶数;
但实现的时候要创建一个新的空数组重新填充一遍元素,这样的话空间复杂度是不是就算O(n)而不是O(1)了?
写回答
2回答
-
循环一次就是 O(n)
10 -
aibo
提问者
2024-02-23
fn rotate (arr, k) {
const len=arr.length
let res=[]
res.length=len
for (let i=0; i<len; i++) {
let ndx=0
i<(len-k) ? ndx=i+k : ndx=i-(len-k)
res[ndx] = arr[i]
}
}00
相似问题