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
该题考察的知识点是数组操作和反转。
代码的文字解释如下:
- 函数
rotate_left
的作用是将数组nums
向左旋转k
个元素。 - 获取数组的长度
n
。 - 调用
fun
函数对数组进行三次操作:第一次操作:翻转整个数组。第二次操作:翻转从数组起始位置到第 n-k-1 个元素的子数组。第三次操作:翻转从第 n-k 个元素到数组末尾的子数组。 - 返回旋转后的数组
nums
。