js实现批量右移
实现数组元素批量右移的方法
通过交换元素位置实现右移操作,以下是具体实现方式:
function batchRightShift(arr, shiftCount) {
const len = arr.length;
shiftCount = shiftCount % len;
reverse(arr, 0, len - 1);
reverse(arr, 0, shiftCount - 1);
reverse(arr, shiftCount, len - 1);
return arr;
}
function reverse(arr, start, end) {
while (start < end) {
[arr[start], arr[end]] = [arr[end], arr[start]];
start++;
end--;
}
}
使用临时数组的实现方式
创建临时数组存储被移动元素:
function rightShiftWithTemp(arr, k) {
const n = arr.length;
k = k % n;
const temp = arr.slice(n - k);
for (let i = n - 1; i >= k; i--) {
arr[i] = arr[i - k];
}
for (let i = 0; i < k; i++) {
arr[i] = temp[i];
}
return arr;
}
处理字符串右移的情况
字符串可以转换为数组处理后再转回字符串:
function stringRightShift(str, shift) {
const arr = str.split('');
const shifted = batchRightShift(arr, shift);
return shifted.join('');
}
性能优化建议
对于大型数组,使用三次反转法效率更高,时间复杂度为O(n),空间复杂度为O(1)。临时数组方法虽然直观,但需要额外空间。

实际应用中应根据数据规模选择合适方法,并注意处理shiftCount大于数组长度的情况。





