一、知识点:
数组反转
二、文字分析:
首先对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--; } } }