多语言展示
当前在线:1936今日阅读:138今日分享:34

力扣算法习题——解压缩编码列表

题目简介:给你一个以行程长度编码压缩的整数列表 nums 。考虑每对相邻的两个元素 freq, val] = [nums[2*i], nums[2*i+1]] (其中 i >= 0 ),每一对都表示解压后子列表中有 freq 个值为 val 的元素,你需要从左到右连接所有子列表以生成解压后的列表。请你返回解压后的列表、
方法/步骤
1

示例1如图示

2

示例2如图示

3

提示如图示

4

解题思路:此题关键是如何快速生成一个多个重复元素的列表。

5

快速生成一个列表可以采用列表推导。

6

故本题的主要思想是利用列表推导,生成相应的数组。循环遍历数组中的偶数索引位置的值(0,2,4...).此值决定了生成数组的长度。然后将每个生成的数组拼接即可。

7

下面简介列表推导:

8

列表推导式提供了从序列创建列表的简单途径。通常应用程序将一些操作应用于某个序列的每个元素,用其获得的结果作为生成新列表的元素,或者根据确定的判定条件创建子序列。

9

每个列表推导式都在 for 之后跟一个表达式,然后有零到多个 for 或 if 子句。返回结果是一个根据表达从其后的 for 和 if 上下文环境中生成出来的列表。如果希望表达式推导出一个元组,就必须使用括号。

10

下面列举一些列表推导的实例。1.列表中每个数值乘三,获得一个新的列表。如图示。

11

2.生成以一个二维列表如图示

12

3.对序列里每一个元素逐个调用某方法.如图示。

13

4.在列表推导中加入if判断。如图示。

14

其它例子。如图示。

15

因此生成一个重复元素列表的方法如图示。

16

主要的问题已经解决了。完整代码如图示。

17

提交结果如图示。

推荐信息