原問題聲明:三和算法解決方案
給定一個n個整數的數組S,是否存在S中的元素a,b,c使得a + b + c = 0?查找數組中所有唯一的三元組,它們的總和爲零。
注意:解決方案集不能包含重複的三元組。
For example, given array S = [-1, 0, 1, 2, -1, -4],
A solution set is: [[-1, 0, 1], [-1, -1, 2]]
你好,我解決了上本文給出了兩個和問題一段時間回來,我想用它來解決這三個總和爲好。我的想法是,每個元素找到剩餘列表* -1到0取得該款項高達元素然而兩個元素,此代碼不通過所有測試,例如
Input: [-4,-2,-2,-2,0,1,2,2,2,3,3,4,4,6,6]
Output: [[-4,-2,6],[-4,0,4],[-4,1,3],[-4,2,2]]
Expected: [[-4,-2,6],[-4,0,4],[-4,1,3],[-4,2,2],[-2,-2,4],[-2,0,2]]
我不真的知道什麼是錯的。有人能夠友好地向我解釋問題。 謝謝
class Solution(object):
def threeSum(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
def twoSum(self, nums, target):
targ = target
for index, i in enumerate(nums):
targ -= i
if targ in nums[index+1:]:
return [nums[index], nums[nums[index+1:].index(targ)+index+1]]
else:
targ = target
return None
res = []
for index, i in enumerate(nums):
target = i * -1
num = nums[:index] + nums [index+1:]
ans = twoSum(self, num, target)
if ans != None:
temp = ans + [i]
temp.sort()
res.append(temp)
print(res)
import itertools
res.sort()
res = list(res for res,_ in itertools.groupby(res))
return res
原題:https://leetcode.com/problems/3sum/description/
的一個我用來解決這個問題:https://leetcode.com/problems/two-sum/description/
請在問題中包含問題的描述,而不是其他網站的鏈接。如果該網站發生故障或更改網址格式,您的問題將來就不會被理解。 – Phrogz
@Phrogz注意到和更改,感謝您的輸入 – someRandomGuy
我發現問題是迭代錯過了可能發生在同一元素兩次的任何組合。我會盡力找出解決辦法並在此發佈答案。 – someRandomGuy