题目链接:
首先我们先观察题目,题目中给出了一个数组,一个n(用来分别X值和Y值),然后这个数组本来是[x1,x2,...y1,y2],让我们改成[x1,y1,x2,y2...]这种形式。也就是一个x值后面跟着一个y值。
我比较笨,观察出来的规律是原来是nums[i]的位置变成了nums[2*i],nums[i+n]填到了nums[2*i+1]。所以我们可以新建一个数组,用空间换时间的方法。
代码如下:
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int* shuffle(int* nums, int numsSize, int n, int* returnSize){
int* ret = (int*)calloc(sizeof(int),numsSize);
for(int i = 0;i < n;i++)
{
ret[2*i] = nums[i];
ret[2*i+1] = nums[i+n];
}
*returnSize = numsSize;
return ret;
}