题目描述
给你一个以行程长度编码压缩的整数列表 nums
。
考虑每相邻两个元素 [a, b] = [nums[2*i], nums[2*i+1]]
(其中 i >= 0
),每一对都表示解压后有 a
个值为 b
的元素。
请你返回解压后的列表。
样例
输入:nums = [1,2,3,4]
输出:[2,4,4,4]
限制
2 <= nums.length <= 100
nums.length % 2 == 0
1 <= nums[i] <= 100
算法
(模拟) $O(nm)$
- 直接按照题目描述模拟即可。
时间复杂度
- 设 $m$ 为
nums[i]
的最大值,时间复杂度为 $O(nm)$。
空间复杂度
- 需要额外 $O(nm)$ 的空间存储答案。
C++ 代码
class Solution {
public:
vector<int> decompressRLElist(vector<int>& nums) {
vector<int> ans;
for (int i = 0; i < nums.size(); i += 2)
while (nums[i]--)
ans.push_back(nums[i + 1]);
return ans;
}
};