亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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

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

繁花如伊 2022-11-09 17:12:57
我試圖解決問題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
查看完整描述

1 回答

?
慕桂英3389331

TA貢獻2036條經驗 獲得超8個贊

如果 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

]


查看完整回答
反對 回復 2022-11-09
  • 1 回答
  • 0 關注
  • 121 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號