轮转数组
2026年3月18日小于 1 分钟
轮转数组
使用的方法
无
解题思路
- 创建一个新的数组
ans,长度与输入数组nums相同。 - 遍历输入数组
nums,对于每个元素nums[i],将其放置在新数组ans的位置(i + k) % n,其中n是数组的长度。 - 最后,将新数组
ans的元素复制回输入数组nums中,以完成原地旋转。 - 这种方法的时间复杂度为 O(n),空间复杂度为 O(n),因为使用了一个额外的数组来存储旋转后的结果。
代码实现
class Solution {
public void rotate(int[] nums, int k) {
int n = nums.length;
int[] ans = new int[n];
for(int i=0;i<n;i++){
ans[(i+k)%n] = nums[i];
}
for(int i=0;i<n;i++){
nums[i] = ans[i];
}
}
}