我尝试做1313这个问题。在Leetcode上解压运行长度编码的列表,我的代码在我的IDE上完美地运行,但是当我在Leetcode上提交它时,有时会向后迭代字典,使我的输出列表处于相反的顺序。我95%确信我的代码是正确的,因为它在同一测试用例上向后迭代字典之前通过了3-4个测试用例。这是一个bug,还是我的代码有什么问题?谢谢你的帮助!
class Solution(object):
def decompressRLElist(self, nums):
"""
:type nums: List[int]
:rtype: List[int]
"""
d = {}
l = []
for i in range(0, len(nums), 2):
d[nums[i+1]] = nums[i]
print(d)
for (k,v) in d.items():
for j in range(v):
l.append(k)
return l发布于 2020-05-06 21:38:13
如果Leetcode运行Python3.5或更高版本,那么字典实现是not older 。请参阅Why is the order in dictionaries and sets arbitrary?
在这里你不需要一本字典,无论如何,你可以完全消除字典:
class Solution(object):
def decompressRLElist(self, nums):
"""
:type nums: List[int]
:rtype: List[int]
"""
l = []
for i in range(0, len(nums), 2):
k = nums[i+1]
v = nums[i]
for j in range(v):
l.append(k)
return l实际上,您的字典解决方案是不正确的,因为相同的值可能不止一次出现在LRE中,具有不同的长度;下面是一个简单的示例,可以说明这个问题:
[
3, 42,
2, 17,
4, 42
]这应扩大到:
[
42, 42, 42,
17, 17,
42, 42, 42, 42
]但是您的解决方案会输出不正确的结果,因为将输入放在字典d中首先意味着您随后对{42: 4, 17: 2}进行操作,因此您将输出
[
42, 42, 42, 42,
17, 17
]https://stackoverflow.com/questions/61645795
复制相似问题