Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 优化3Sum问题的解决方案运行时_Python_Runtime - Fatal编程技术网

Python 优化3Sum问题的解决方案运行时

Python 优化3Sum问题的解决方案运行时,python,runtime,Python,Runtime,我试图在给定的一组和为零的整数中找到所有唯一的三元组。我有下面的代码,对我来说,它在逻辑上工作,但我一直得到一个超时错误。关于我缺少什么或如何优化,有什么建议吗?我已经检查过好几次了,我不知道如何使它更快。提前谢谢 class Solution: def threeSum(self, nums): """ :type nums: List[int] :rtype: List[List[int]] """ nums.sort() for i in r

我试图在给定的一组和为零的整数中找到所有唯一的三元组。我有下面的代码,对我来说,它在逻辑上工作,但我一直得到一个超时错误。关于我缺少什么或如何优化,有什么建议吗?我已经检查过好几次了,我不知道如何使它更快。提前谢谢

class Solution:
def threeSum(self, nums):
    """
    :type nums: List[int]
    :rtype: List[List[int]]
    """
    nums.sort()
    for i in range(len(nums)-2):
        if i > 0 and nums[i] == nums[i-1]:
            continue

        target = 0 - nums[i]
        j = i +1
        k = len(nums) - 1
        tgt_sum = 0
        trpls = []

        while j < k:
            tgt_sum = nums[j] + nums[k]
            if tgt_sum == target:
                x = []
                x.append([i,j,k])
                if all(item in trpls for item in x) == True:
                    trpls_list.append([i,j,k])
            elif tgt_sum < target:
                j += 1
            elif tgt_sum > target:
                k -= 1
            else:
                k -= 1

test = Solution()
given_nums = [-1,0,1,2,-1,-4]
print(test.threeSum(given_nums))
类解决方案:
def三和(自身,nums):
"""
:type nums:List[int]
:rtype:List[List[int]]
"""
nums.sort()
对于范围内的i(len(nums)-2):
如果i>0且nums[i]==nums[i-1]:
持续
目标=0-nums[i]
j=i+1
k=len(nums)-1
tgt_和=0
trpls=[]
而j目标:
k-=1
其他:
k-=1
测试=溶液()
给定的数值=[-1,0,1,2,-1,-4]
打印(测试三和(给定数量))

Python完成无限循环的速度非常慢。那我就自己出去吧…@MikeBeaton如果tgt_sum==target,他们不会改变
j
k
,所以他们会无限循环。tgt_sum==target没有中断…所以在这种情况下它只是无限循环。哈哈哈@HeapOverflow的反应很滑稽,完全需要蔑视。再次感谢您的编辑。