题目:
给你一个以行程长度编码压缩的整数列表 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
很尴尬,每次看到算法题的第一反应是,我在哪,我是谁,我是干啥,它在说啥,没看懂。
题目的理解:
按提示i >= 0 来将a b计算出来:
- i = 0 [nums[0], nums[1]] -> [1, 2] -> a = 1, b = 2
- i = 1 [nums[2], nums[3]] -> [3, 4] -> a = 3, b = 4
按"表示解压后有 a 个值为 b 的元素"得出: - 有1个值为2的元素
- 有3个值为4的元素
总结:[2, 4, 4, 4]
python实现
class Solution:
def decompressRLElist(self, nums: List[int]) -> List[int]:
result = list()
i = 0
while True:
left = 2 * i
right = 2 * i + 1
if left >= len(nums) or right >= len(nums):
break
a = nums[left]
b = nums[right]
for index in range(a):
result.append(b)
i += 1
return result
提交
执行代码测试下,得到预计结果,提交。
成功
// END 一句一句分析题目,搞定
网友评论