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.
1 void rotate(int* nums, int numsSize, int k) 2 { 3 int *TempArray; 4 TempArray=(int *)malloc(numsSize*sizeof(int)); 5 6 for(int i=0;i<numsSize;i++) 7 { 8 if((i+k+1)<=numsSize) 9 { 10 TempArray[i+k]=nums[i]; 11 } 12 else 13 { 14 TempArray[(i+k)%numsSize]=nums[i]; 15 } 16 } 17 18 for(int i=0;i<numsSize;i++) 19 { 20 nums[i]=TempArray[i]; 21 } 22 }