给定一个包含 n 个整数的数组 nums
和一个目标值 target
,判断 nums
中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target
相等?找出所有满足条件且不重复的四元组。
注意:
答案中不可以包含重复的四元组。
class Solution(object):
def findAllGroups(self, target, startIndex, endIndex):
if(endIndex - startIndex) < target:
return []
elif(endIndex - startIndex == target):
result = range(startIndex, endIndex)
return [result]
if(target == 1):
resultContainStartIndex = [[x] for x in range(startIndex, endIndex)]
return resultContainStartIndex
elif(target > 1):
resultContainStartIndex = self.findAllGroups(target - 1, startIndex + 1, endIndex)
for element in resultContainStartIndex:
element.append(startIndex)
resultNotContainStartIndex = self.findAllGroups(target, startIndex + 1, endIndex)
result = resultContainStartIndex + resultNotContainStartIndex
return result
def fourSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[List[int]]
"""
result = []
numsLen = len(nums)
groups = self.findAllGroups(4, 0, numsLen)
for group in groups:
sum = 0
for index in group:
sum += nums[index]
if(sum == target):
r = [nums[x] for x in group]
r.sort()
if(r not in result):
result.append(r)
return result