实例,实现如下算法:
[1,2,3,4,5,6,7] K = 3 ==> [5,6,7,1,2,3,4]
方法一
首先对大于k的值处理,使用k值对arr数组长度取余
然后从0-->step循环取出数组中的值,然后在头插入
算法如下
function rotate(arr, k) {
const step = k % arr.length;
for (let i = 0; i < step; i++) {
const last = arr.pop();
arr.unshift(last);
}
return arr;
}
方法二
首先对大于k的值处理,使用k值对arr数组长度取余
然后利用slice对数组进行截取和拼接
function rotate1(arr, k) {
const step = k % arr.length;
return arr.slice(-step).concat(arr.slice(0, arr.length - step));
}
方法三
首先对大于k的值处理,使用k值对arr数组长度取余
然后利用splice对数组进行截取和拼接
function rotate2(arr, k) {
const step = k % arr.length;
return arr.splice(-step).concat(arr);
}
测试
const arr = [1, 2, 3, 4, 5, 6, 7],
k = 4;
console.log(rotate(arr, k));
console.log(rotate1(arr, k));
console.log(rotate2(arr, k));