Welcome to Subscribe On Youtube
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
Solutions
-
class Solution { public int[] decompressRLElist(int[] nums) { int n = 0; for (int i = 0; i < nums.length; i += 2) { n += nums[i]; } int[] res = new int[n]; for (int i = 1, k = 0; i < nums.length; i += 2) { for (int j = 0; j < nums[i - 1]; ++j) { res[k++] = nums[i]; } } return res; } }
-
class Solution { public: vector<int> decompressRLElist(vector<int>& nums) { vector<int> res; for (int i = 1; i < nums.size(); i += 2) { for (int j = 0; j < nums[i - 1]; ++j) { res.push_back(nums[i]); } } return res; } };
-
class Solution: def decompressRLElist(self, nums: List[int]) -> List[int]: res = [] for i in range(1, len(nums), 2): res.extend([nums[i]] * nums[i - 1]) return res
-
func decompressRLElist(nums []int) []int { var res []int for i := 1; i < len(nums); i += 2 { for j := 0; j < nums[i-1]; j++ { res = append(res, nums[i]) } } return res }
-
function decompressRLElist(nums: number[]): number[] { let n = nums.length >> 1; let ans = []; for (let i = 0; i < n; i++) { let freq = nums[2 * i], val = nums[2 * i + 1]; ans.push(...new Array(freq).fill(val)); } return ans; }
-
impl Solution { pub fn decompress_rl_elist(nums: Vec<i32>) -> Vec<i32> { let n = nums.len() >> 1; let mut ans = Vec::new(); for i in 0..n { for _ in 0..nums[2 * i] { ans.push(nums[2 * i + 1]); } } ans } }