LeetCode //C - 1313. Decompress Run-Length Encoded List

1313. Decompress Run-Length Encoded List

We are given a list nums of integers representing a list compressed with run-length encoding.

Consider each adjacent pair of elements freq, val = nums\[2*i, nums2*i+1] (with i >= 0). For each such pair, there are freq elements with value val concatenated in a sublist. Concatenate all the sublists from left to right to generate the decompressed list.

Return the decompressed list.

Example 1:

Input: nums = 1,2,3,4

Output: 2,4,4,4

Explanation: The first pair 1,2 means we have freq = 1 and val = 2 so we generate the array 2.

The second pair 3,4 means we have freq = 3 and val = 4 so we generate 4,4,4.

At the end the concatenation 2 + 4,4,4 is 2,4,4,4.

Example 2:

Input: nums = 1,1,2,3

Output: 1,3,3

Constraints:
  • 2 <= nums.length <= 100
  • nums.length % 2 == 0
  • 1 <= numsi <= 100

From: LeetCode

Link: 1313. Decompress Run-Length Encoded List


Solution:

Ideas:

First calculate the total output size, allocate the array, then insert each val exactly freq times.

Code:
c 复制代码
#include <stdlib.h>

/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* decompressRLElist(int* nums, int numsSize, int* returnSize) {
    int totalSize = 0;

    // Calculate the decompressed array size.
    for (int i = 0; i < numsSize; i += 2) {
        totalSize += nums[i];
    }

    int* result = (int*)malloc(totalSize * sizeof(int));
    int index = 0;

    // Add each value frequency times.
    for (int i = 0; i < numsSize; i += 2) {
        int frequency = nums[i];
        int value = nums[i + 1];

        for (int j = 0; j < frequency; j++) {
            result[index++] = value;
        }
    }

    *returnSize = totalSize;
    return result;
}
相关推荐
dialect_1 小时前
CODEFORCES ROUND 1127 DIV2
开发语言·c++·算法
Nuanyt1 小时前
LeetCode Hot 100 链表专题(四)· 3 题(Java)
java·算法·leetcode·链表·双指针
灯澜忆梦2 小时前
LeetCode 1861. 旋转盒子|Go 双指针解法
算法
软件派3 小时前
生产动态数据智能风控:阈值判别、趋势预测、异常识别算法工程落地实战
前端·数据库·算法
wuminyu10 小时前
JVM规范学习总结:解释器与JIT编译器如何处理JVM字节码
java·linux·c语言·jvm·c++
ZhengEnCi10 小时前
模型训练完整流程:从数据准备到模型上线的 10 个关键步骤(全文可跑)
后端·算法
吞下星星的少年·-·14 小时前
Div.3 CF 1131A题(排序,模拟)
算法·模拟·排序
圣保罗的大教堂14 小时前
leetcode 453. 最小操作次数使数组元素相等 中等
leetcode