我使用我过去的代码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]
。
我可能做错了什么?除了真正的答案,我还没有真正担心优化。