js实现批量右移
实现数组批量右移的方法
数组右移指的是将数组中的元素向右移动k个位置,超出数组长度的部分从头部开始填充。以下是几种实现方法:
方法一:使用临时数组 创建一个临时数组存储移动后的元素,再将结果复制回原数组。
function rotateRight(arr, k) {
const n = arr.length;
k = k % n;
const temp = [];
for (let i = 0; i < n; i++) {
temp[(i + k) % n] = arr[i];
}
for (let i = 0; i < n; i++) {
arr[i] = temp[i];
}
return arr;
}
方法二:三次反转法 通过三次反转操作实现右移,无需额外空间。
function reverse(arr, start, end) {
while (start < end) {
[arr[start], arr[end]] = [arr[end], arr[start]];
start++;
end--;
}
}
function rotateRight(arr, k) {
const n = arr.length;
k = k % n;
reverse(arr, 0, n - 1);
reverse(arr, 0, k - 1);
reverse(arr, k, n - 1);
return arr;
}
方法三:使用splice和concat 利用数组的splice和concat方法拼接数组。
function rotateRight(arr, k) {
const n = arr.length;
k = k % n;
const part = arr.splice(n - k, k);
return part.concat(arr);
}
注意事项
- 当k大于数组长度时,取模运算
k % n确保移动次数在合理范围内。 - 方法二的空间复杂度为O(1),适合处理大数据量。
- 方法三简洁但会修改原数组。
以上方法均可实现数组批量右移,根据实际需求选择合适的方式。







