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

我试图解决问题1313。在 Leetcode 上解压缩运行长度编码列表,我的代码在我的 IDE 上运行完美,但是当我在 Leetcode 上提交它时,有时,字典会向后迭代,导致我的输出列表顺序相反. 我 95% 确定我的代码是正确的,因为它在字典在同一个测试用例上向后迭代之前通过了 3-4 个测试用例。这是一个错误,还是我的代码有问题?谢谢你的帮助!


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


繁花如伊
浏览 105回答 1
1回答

慕桂英3389331

如果 Leetcode 运行 Python 3.5 或更早版本,那么字典实现是无序的。请参阅为什么字典和集合中的顺序是任意的?这里不需要字典,反正你可以完全去掉字典: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]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python