首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python :在Leetcode中向后迭代字典

Python :在Leetcode中向后迭代字典
EN

Stack Overflow用户
提问于 2020-05-06 21:33:03
回答 1查看 96关注 0票数 0

我尝试做1313这个问题。在Leetcode上解压运行长度编码的列表,我的代码在我的IDE上完美地运行,但是当我在Leetcode上提交它时,有时会向后迭代字典,使我的输出列表处于相反的顺序。我95%确信我的代码是正确的,因为它在同一测试用例上向后迭代字典之前通过了3-4个测试用例。这是一个bug,还是我的代码有什么问题?谢谢你的帮助!

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-06 21:38:13

如果Leetcode运行Python3.5或更高版本,那么字典实现是not older 。请参阅Why is the order in dictionaries and sets arbitrary?

在这里你不需要一本字典,无论如何,你可以完全消除字典:

代码语言:javascript
复制
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中,具有不同的长度;下面是一个简单的示例,可以说明这个问题:

代码语言:javascript
复制
[
    3, 42,
    2, 17,
    4, 42
]

这应扩大到:

代码语言:javascript
复制
[
    42, 42, 42,
    17, 17,
    42, 42, 42, 42
]

但是您的解决方案会输出不正确的结果,因为将输入放在字典d中首先意味着您随后对{42: 4, 17: 2}进行操作,因此您将输出

代码语言:javascript
复制
[
    42, 42, 42, 42,
    17, 17
]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61645795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档