簡體   English   中英

如何加速python中的嵌套for循環?

[英]How to speed up nested for loop in python?

我的3sum問題的leetcode算法無法通過第311個測試用例-超出時間限制(列表長度為3000)

嵌套循環似乎是我算法中效率最低的部分。 有沒有辦法通過使用不同的方法來提高效率?

def threeSum(self, nums: List[int]) -> List[List[int]]:
    result = []

    for i, e in enumerate(nums):
        for i2, e2 in enumerate(nums[i+1:]):
            e3 = -1 * (e + e2)
            l = [e,e2,e3]
            l.sort()
            if l in result:
                continue

            nums[i] = ''
            nums[i2+i+1] = ''
            if e3 in nums:
                result.append(l)
            nums[i] = e
            nums[i2+i+1] = e2

    return result

我也嘗試刪除 l.sort(),但仍然超出了時間限制:

nums.sort()
    for i, e in enumerate(nums):
        for i2, e2 in enumerate(nums[i+1:]):
            e3 = -1 * (e + e2)
            l = []
            if e3 > e2:
                l = [e,e2,e3]
            elif e3 < e:
                l = [e3,e,e2]
            else:
                l = [e,e3,e2]
            if l in result:
                continue

            nums[i] = ''
            nums[i2+i+1] = ''
            if e3 in nums:
                result.append(l)
            nums[i] = e
            nums[i2+i+1] = e2

    return result

首先,一個基本規則是永遠不要更改您正在迭代的列表。

其次,你需要改變你的想法。 想想如何將現有問題簡化為多個 2su​​m 問題,並單獨解決每個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM