
本篇博客会讲解力扣“1313. 解压缩编码列表”的解题思路,这是题目链接。

 题目要返回一个数组,这个数组是多大呢?由于下标是偶数的元素决定了每个数据要写入几次,所以要对这些项求和,就知道答案数组要开多大了。
接着,我们需要遍历数组,下标是偶数的元素决定了每个数据要写入几次,下标是奇数的元素决定了写入的数据。
int* decompressRLElist(int* nums, int numsSize, int* returnSize){
    // 返回数组大小是偶数项之和
    *returnSize = 0;
    for (int i = 0; i < numsSize; i += 2)
    {
        (*returnSize) += nums[i];
    }
    int* ret = (int*)malloc(sizeof(int) * *returnSize);
    // 遍历数组,解码
    int sz = 0; // 记录写入的位置
    for (int i = 0; i < numsSize; i += 2)
    {
        // 写入nums[i]次nums[i+1]
        for (int j = 0; j < nums[i]; ++j)
        {
            ret[sz++] = nums[i + 1];
        }
    }
    return ret;
}
 

总结
本题的关键在于,返回的数组大小是下标为偶数的元素之和。
感谢大家的阅读!



![[SWPUCTF 2021 新生赛] jicao](https://img-blog.csdnimg.cn/a37480c55fa14d1dbdb1edc0ea25b92a.png)















