1313. 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.
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 <= nums[i] <= 100
💡 Hint 1:
Decompress the given array by repeating nums[2*i+1] a number of times equal to nums[2*i].
Submitted Code
class Solution:
def decompressRLElist(self, nums: List[int]) -> List[int]:
n = len(nums)
result = []
for freq, val in zip(nums[0::2], nums[1::2]):
for _ in range(freq):
result.append(val)
return result
Runtime: 0 ms | Beats 100.00%
Memory: 19.35 MB | Beats 43.72%
zip()을 이용하여 [nums[2i], nums[2i+1]] 두 쌍을 만들었다. zip()은 인덱스를 초과해도 범위 에러가 발생하지 않기 때문에 range()보다 더 편리해서 사용했다.
Other Solutions
1st
class Solution:
def decompressRLElist(self, A):
return [x for a, b in zip(A[::2], A[1::2]) for x in [b] * a]
time complexity: 𝑂(𝑛)
space complexity: 𝑂(𝑛)