一、知识点:
数组反转
二、文字分析:
首先对k进行取模操作,将其限制在[0, n)的范围内,其中n是数组长度。当k为0时,表示不需要进行轮转,直接返回原数组。
接下来,我们使用三次反转操作来实现轮转。首先,对整个数组进行反转,然后分别对前k个元素和剩余的元素进行反转。
时间复杂度是O(n),其中n是输入数组的长度。
空间复杂度为O(1),即常数级别的空间。
三、编程语言:
java
四、正确代码:
public class Solution {
public int[] rotateCows(int[] nums, int k) {
int n = nums.length;
// 对k进行取模,确保k在[0, n)的范围内
k = k % n;
// 当k为0时,表示不需要进行轮转,直接返回原数组
if (k == 0) {
return nums;
}
// 反转整个数组
reverse(nums, 0, n - 1);
// 反转前k个元素
reverse(nums, 0, k - 1);
// 反转剩余的元素
reverse(nums, k, n - 1);
return nums;
}
private void reverse(int[] nums, int start, int end) {
while (start < end) {
int temp = nums[start];
nums[start] = nums[end];
nums[end] = temp;
start++;
end--;
}
}
}

京公网安备 11010502036488号