Welcome to Subscribe On Youtube
Formatted question description: https://leetcode.ca/all/1313.html
1313. Decompress Run-Length Encoded List (Easy)
We are given a list nums
of integers representing a list compressed with run-length encoding.
Consider each adjacent pair of elements [a, b] = [nums[2*i], nums[2*i+1]]
(with i >= 0
). For each such pair, there are a
elements with value b
in 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,4] is [2,4,4,4].
Constraints:
2 <= nums.length <= 100
nums.length % 2 == 0
1 <= nums[i] <= 100
Related Topics:
Array
Similar Questions:
Solution 1.
-
class Solution { public int[] decompressRLElist(int[] nums) { List<Integer> list = new ArrayList<Integer>(); int length = nums.length; for (int i = 0; i < length; i += 2) { int count = nums[i]; int value = nums[i + 1]; for (int j = 0; j < count; j++) list.add(value); } int size = list.size(); int[] decompressed = new int[size]; for (int i = 0; i < size; i++) decompressed[i] = list.get(i); return decompressed; } } ############ 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; } }
-
// OJ: https://leetcode.com/problems/decompress-run-length-encoded-list/ // Time: O(N) where N is the length of the output array. // Space: O(1) class Solution { public: vector<int> decompressRLElist(vector<int>& nums) { vector<int> ans; for (int i = 0; i < nums.size(); i += 2) { for (int j = 0; j < nums[i]; ++j) ans.push_back(nums[i + 1]); } return ans; } };
-
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 } }