Decompress Run-Length Encoded List

easy array run-length encoding simulation

Problem

You are given a list nums compressed with run-length encoding. Read it as adjacent pairs [freq, val] = [nums[2i], nums[2i+1]]. Each pair expands to freq copies of val. Concatenate the expansions left to right and return the decompressed list.

Inputnums = [1,2,3,4]
Output[2,4,4,4]
Pair [1,2] → [2]; pair [3,4] → [4,4,4]; concatenated: [2,4,4,4].
Inputnums = [1,1,2,3]
Output[1,3,3]
Pair [1,1] → [1]; pair [2,3] → [3,3].

def decompress(nums):
    res = []
    for i in range(0, len(nums), 2):
        freq, val = nums[i], nums[i + 1]
        for _ in range(freq):
            res.append(val)
    return res
function decompress(nums) {
  const res = [];
  for (let i = 0; i < nums.length; i += 2) {
    const freq = nums[i], val = nums[i + 1];
    for (let k = 0; k < freq; k++) {
      res.push(val);
    }
  }
  return res;
}
int[] decompress(int[] nums) {
    List<Integer> res = new ArrayList<>();
    for (int i = 0; i < nums.length; i += 2) {
        int freq = nums[i], val = nums[i + 1];
        for (int k = 0; k < freq; k++) {
            res.add(val);
        }
    }
    return res.stream().mapToInt(Integer::intValue).toArray();
}
vector<int> decompress(vector<int>& nums) {
    vector<int> res;
    for (int i = 0; i < (int)nums.size(); i += 2) {
        int freq = nums[i], val = nums[i + 1];
        for (int k = 0; k < freq; k++) {
            res.push_back(val);
        }
    }
    return res;
}
Time: O(sum of freq) Space: O(sum of freq)