一.问题描述
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
二.解题思路
题目的意思就是说给的这个nums是一个被压缩的列表的表示,
奇数位表示频率,偶数位(跟在前面奇数位后面)表示值。
水题无疑,这道题可以用生成表达式一行搞定。
不用生成表达式可以用+或者extend连接数组。
更多leetcode算法题解法: 专栏 leetcode算法从零到结束 或者 leetcode 解题目录 Python3 一步一步持续更新~
三.源码
#version 1
class Solution:
def decompressRLElist(self, nums: List[int]) -> List[int]:
return [nums[i+1] for i in range(0,len(nums),2) for j in range(nums[i])]
#version2
class Solution:
def decompressRLElist(self, nums: List[int]) -> List[int]:
rst=[]
for i in range(0,len(nums),2):
rst.extend(nums[i]*[nums[i+1]])
return rst