给你一个数组,将数组中的元素向右轮转 k
个位置,其中 k
是非负数。
class Solution {
public void rotate(int[] nums, int k) {
int n = nums.length;
k %= n;
rotate_2(nums,0,n-1);
rotate_2(nums,0,k-1);
rotate_2(nums,k,n-1);
}
private void rotate_2(int[] nums,int i,int j){
while(i<j){
int temp = nums[i];
nums[i++] = nums[j];
nums[j--] = temp;
}
}
}
运行结果:
思路:
rotate_2(nums,0,n-1);整个数组首尾调换;
rotate_2(nums,0,k-1);前K个元素首尾调换;
rotate_2(nums,k,n-1);剩下的元素首尾调换。