Java 题解 | #向左移动牛群#

向左移动牛群

https://www.nowcoder.com/practice/e70fc604c3684ce294e6af5e97feff04

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param nums int整型一维数组
     * @param k int整型
     * @return int整型一维数组
     */
    public int[] rotateCows (int[] nums, int k) {
        // write code here

        int len = nums.length;
        k = k % len; // 处理 k 值大于数组长度的情况

        reverse(nums, 0, len - 1); // 将整个数组进行反转
        reverse(nums, 0, k - 1); // 将前 k 个元素进行反转
        reverse(nums, k, len - 1); // 将剩余的元素进行反转

        return nums;
    }

    private void reverse(int[] arr, int start, int end) {
        while (start < end) {
            int temp = arr[start];
            arr[start] = arr[end];
            arr[end] = temp;
            start++;
            end--;
        }
    }
}

该代码使用的编程语言是Java。

这道题考察的知识点包括数组(或列表)的旋转和反转操作。

代码的文字解释如下:

  1. rotate_cows(nums, k) 函数接受一个整数列表 nums 和一个整数 k 作为参数,并返回一个整数列表。
  2. 对 k 进行取模运算,以处理可能出现的 k 值大于列表长度的情况,确保旋转的步数不超过列表长度。
  3. 通过三次反转操作实现列表的旋转:第一次反转:将整个列表进行反转。第二次反转:将前 k 个元素进行反转。第三次反转:将剩余的元素进行反转。
  4. 返回旋转后的列表作为结果。

辅助函数 reverse(arr, start, end) 用于反转列表中指定区间的元素。具体操作是通过交换起始位置和结束位置上的元素进行反转。

全部评论

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务