旋转数组

 

给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数

void rotate(int* nums, int numsSize, int k)
{
    int*p=(int*)malloc(numsSize*sizeof(int));
    for(int i=0;i<numsSize;i++)
       p[(i+k)%numsSize]=nums[i];
    for(int i=0;i<numsSize;i++)
    nums[i]=p[i];
    free(p);
    return nums;
}

对于给定的数组要将它进行翻转首先定义另外一个数组p,p的大小与给定数组的大小相等,通过数学规律可以发现(1+k)%numSize所得的值即为翻转后的数组所对应的下标,接下来用for循环将数组遍历赋值即可,最后输出改变后的数组