题目:
给定一个包含 n 个整数的数组 S,是否存在属于 S 的三个元素 a,b,c 使得 a + b + c = 0 ?找出所有不重复的三个元素组合使三个数的和为零。
注意:结果不能包括重复的三个数的组合。
例如, 给定数组 S = [-1, 0, 1, 2, -1, -4], 一个结果集合为: [ [-1, 0, 1], [-1, -1, 2] ]
解法一:
def threeSum(nums):
zero = []
for i, a in enumerate(nums):
if a < 0:
if -a in nums:
if 0 in nums:
if [a, 0, -a] not in zero:
zero.append([a, 0, -a])
for j, b in enumerate(nums):
if b < 0 and i != j:
c = a + b
if -c in nums:
if [a, b, -c] not in zero and [b, a, -c] not in zero:
zero.append([a, b, -c])
if b > 0:
c = -a - b
if c in nums[j+1:] and c > 0:
if [a, b, c] not in zero and [a, c, b] not in zero:
zero.append([a, b, c])
if a == 0:
b = c = a
if b in nums[i+1: ]:
n = nums[i+1: ].index(b) + (i+1)
if c in nums[n + 1: ]:
if [a, b, c] not in zero:
zero.append([a, b, c])
return zero