关于第三个思路

来源:2-6 把一个数组旋转 k 步-性能分析

aibo

2024-02-23

老师,我自己算了算
感觉第三个思路应该是:
数组前部分元素index全部 + k;
后部分元素index全部 - (length-k);
不论数组长度是奇数还是偶数;

但实现的时候要创建一个新的空数组重新填充一遍元素,这样的话空间复杂度是不是就算O(n)而不是O(1)了?
写回答

2回答

双越

2024-02-23

循环一次就是 O(n)

1
0

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]
    }
}
0
0

2周刷完100道前端优质面试真题 双越最新力作

『前端面试真题100道』视频详解

1535 学习 · 654 问题

查看课程