Rotate an array of n elements to the right by k steps.
For example, with n = 7 and k = 3, the array [1,2,3,4,5,6,7]
is rotated to [5,6,7,1,2,3,4]
.
Note:
Try to come up as many solutions as you can, there are at least 3 different ways to solve this problem.
Credits:
Special thanks to @Freezen for adding this problem and creating all test cases.
将一个有 n 个元素的数组向右旋转 k 步,
例如 n=7,k=3 的数组 [1,2,3,4,5,6,7]
,旋转之后[5,6,7,1,2,3,4]
.
这个需要注意的一个点是不知道k 的大小,有可能会超过 n
class Solution {
public:
void rotate(int nums[], int n, int k) {
k = k%n;
if(k==0 || n<1)
return;
int *temp_nums = new int[n];
for(int i=0; i<n; i++){
if(i+k<n)
temp_nums[i+k]=nums[i];
else
temp_nums[(i+k)%n]=nums[i];
}
for(int i=0; i<n; i++)
nums[i] = temp_nums[i];
delete []temp_nums;
}
};