为什么使用2sum的3sum实现失败?

时间:2019-05-23 20:44:35

标签: python arrays list

我使用我过去的代码2sum做leetcode 3sum problem

这非常简单,因为它遍历给定列表中的每个元素,然后使用当前值作为-target.class来调用2sum

Solution(object):
    def threeSum(self, nums):
        output= []
        for i in range(len(nums)):
            temp = self.twosum(nums[:i] + nums[i+1:],-nums[i])
            if temp != -1:
                k = sorted(temp + [nums[i]])
                output.append(k)

        return output


    def twosum(self,nums,target):
        fhash = {}
        for i in range(len(nums)):
            if nums[i] in fhash:
                return [nums[fhash[nums[i]]],nums[i]]
            else:
                fhash[target - nums[i]] = i
        return -1

该代码似乎适用于313个测试用例中的123个。此[-4,-2,-2,-2,0,1,2,2,2,3,3,4,4,6,6]失败。 预期的输出为[[-4,-2,6],[-4,0,4],[-4,1,3],[-4,2,2],[-2,-2,4],[-2,0,2]]。而我的给出:[[-4,2,2],[-2,0,2],[-4,1,3],[-2,-2,4],[-4,-2,6]]

因此它无法识别[-4,0,4]

我可能做错了什么?除了真正的答案,我还没有真正担心优化。

0 个答案:

没有答案