解压缩编码列表

题目:

给你一个以行程长度编码压缩的整数列表 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 一句一句分析题目,搞定

你可能感兴趣的:(解压缩编码列表)