给你一个数组,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/rotate-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
class Solution {
private void swap(int[] nums, int l, int r) {
int tmp = nums[l];
nums[l] = nums[r];
nums[r] = tmp;
}
private void reverse(int[] nums, int l, int r) {
while (l < r) {
swap(nums, l++, r--);
}
}
public void rotate(int[] nums, int k) {
k = k % nums.length;
if (k == 0) {
return;
}
reverse(nums, 0, nums.length - 1);
reverse(nums, 0, k - 1);
reverse(nums, k, nums.length - 1);
}
}