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