力扣,1470. 重新排列数组

博客围绕LeetCode 1470题重新排列数组展开。题目给出数组和n,需将数组从[x1,x2,...y1,y2]形式改成[x1,y1,x2,y2...]。作者观察出位置变换规律,即nums[i]到nums[2*i],nums[i+n]到nums[2*i+1],采用新建数组、空间换时间的方法解题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目链接:

1470. 重新排列数组

        首先我们先观察题目,题目中给出了一个数组,一个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;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值