题目描述
给你一个数组 nums
,数组中有 2n
个元素,按 [x1,x2,...,xn,y1,y2,...,yn]
的格式排列。
请你将数组按 [x1,y1,x2,y2,...,xn,yn]
格式重新排列,返回重排后的数组。
题解
int* shuffle(int* nums, int numsSize, int n, int* returnSize){
int *ans = (int *)malloc(sizeof(int) * n * 2);
for (int i = 0; i < n; i++) {
ans[2 * i] = nums[i];
ans[2 * i + 1] = nums[i + n];
}
*returnSize = n * 2;
return ans;
}
分析
1.题目提交写了个:Note: The returned array must be malloced, assume caller calls free().
所以返回的数组应该先利用malloc开辟动态内存空间。
2.malloc函数用法:指针自身 = (指针类型*)malloc(sizeof(指针类型)*数据数量)
因为malloc返回的是无类型的指针,在使用时一定要强制转换类型。
3.赋值方法:题解方法很巧,只用一个变量i,两个两个一组,下标[2*i]和[2*i+1]。(确实是个好方法,学会了!)