如何用Python实现游程长度(Run Length)解码器?
实现指定规则的解码器
先明确输入输出对应的编码逻辑:输入数组是成对的数值组合,每一组的第一个数是「重复次数」,第二个数是「需要重复的目标值」。解码器要做的就是把每一组的目标值按对应次数展开,拼接成最终数组。
实现思路
- 初始化空数组存储最终结果
- 按步长2遍历输入数组,每次处理一对(次数+目标值)
- 取出当前组的次数和目标值,将目标值重复对应次数后追加到结果数组
- 遍历完成后返回结果数组
代码示例(Python)
def decoder(input_arr): result = [] # 按步长2遍历,确保每次取到一组次数和目标值 for i in range(0, len(input_arr), 2): count = input_arr[i] value = input_arr[i+1] # 扩展结果数组,添加count次value result.extend([value] * count) return result # 测试示例输入 test_input = [3, 15, 6, 4] print(decoder(test_input)) # 输出: [15, 15, 15, 4, 4, 4, 4, 4, 4]
额外说明
如果输入数组长度为奇数(即最后只剩一个单独的数值),可以根据实际需求处理:比如忽略最后一个元素,或者抛出参数异常,只需在代码里添加对应的判断逻辑即可。
内容的提问来源于stack exchange,提问作者Guhan Gnanam
相关产品推荐
相关产品推荐

