给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。
要实现这个功能,我们可以先将整个数组反转,然后分别反转前k个元素和剩余的元素。这样就相当于将数组中的元素向右轮转了k个位置。以下是示例代码:
function rotate(nums, k) {
// 反转整个数组
function reverse(arr, start, end) {
while (start < end) {
let temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
start++;
end--;
}
}
// 反转前k个元素
k %= nums.length;
reverse(nums, 0, k - 1);
// 反转剩余的元素
reverse(nums, k, nums.length - 1);
// 反转整个数组
reverse(nums, 0, nums.length - 1);
}
// 示例
let nums = [1, 2, 3, 4, 5, 6, 7];
let k = 3;
rotate(nums, k);
console.log(nums); // 输出: [5, 6, 7, 1, 2, 3, 4]
这段代码首先定义了一个reverse
函数,用于反转数组的一部分。然后在rotate
函数中,我们先计算k对数组长度的余数,以处理k大于数组长度的情况。接下来,我们分别反转前k个元素、剩余的元素和整个数组,从而实现将数组中的元素向右轮转k个位置的功能。