import java.util.*;


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

        int n = nums.length;
        for (int num : nums) {
            rotatedNums.add(num);
        }

        reverse(rotatedNums, 0, n - 1);
        reverse(rotatedNums, 0, n - k - 1);
        reverse(rotatedNums, n - k, n - 1);

        return rotatedNums;
    }

    private void reverse(List<Integer> list, int start, int end) {
        while (start < end) {
            int temp = list.get(start);
            list.set(start, list.get(end));
            list.set(end, temp);
            start++;
            end--;
        }
    }
}

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

该题考察的知识点是数组操作和反转。

代码的文字解释如下:

  1. 函数 rotate_left 的作用是将数组 nums 向左旋转 k 个元素。
  2. 获取数组的长度 n
  3. 调用 fun 函数对数组进行三次操作:第一次操作:翻转整个数组。第二次操作:翻转从数组起始位置到第 n-k-1 个元素的子数组。第三次操作:翻转从第 n-k 个元素到数组末尾的子数组。
  4. 返回旋转后的数组 nums