###### tags: `leetcode` `easy` `Array` # [1313. Decompress Run-Length Encoded List](https://leetcode.com/problems/decompress-run-length-encoded-list/) ## Description 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], nums[2*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. ## Examples ### 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 \leq nums.length \leq 100$ - `nums.length % 2 == 0` - $1 \leq nums[i] \leq 100$ ## Code ```c= int* decompressRLElist(int* nums, int numsSize, int* returnSize) { int i, j, count = 0, set = numsSize / 2; int* returnArray; *returnSize = 0; // initial size for (i = 0; i < set; i++) // count decompress size *returnSize += nums[2 * i]; // memory allocation decompression space returnArray = (int*)malloc(*returnSize * sizeof(int)); for (i = 0; i < set; i++) // double loop for value assign for (j = 0; j < nums[2 * i]; j++, count++) returnArray[count] = nums[2 * i + 1]; return returnArray; } ``` ## Complexity |Space |Time | |- |- | |$O(N)$|$O(N)$| ## Result - Runtime : 43 ms, 79.43% - Memory usage : 10.5 MB, 30.86%