题目来源于LeetCode
给你一个整数数组 nums
,判断是否存在三元组 [nums[i], nums[j], nums[k]]
满足 i != j
、i != k
且 j != k
,同时还满足 nums[i] + nums[j] + nums[k] == 0
。请
你返回所有和为 0
且不重复的三元组。
注意:答案中不可以包含重复的三元组。
# 三数之和 a+b+c=0
nums = [-1, 0, 1, 2, -1, -4]
nums = sorted(nums)
arr = list()
n = len(nums)
for i in range(n):
if i > 0 and nums[i] == nums[i - 1]:
continue
target = -nums[i]
end = n - 1
for start in range(i + 1, n):
if start > i + 1 and nums[start] == nums[start - 1]:
continue
while start < end and nums[start] + nums[end] > target:
end -= 1
if start == end:
break
if nums[start] + nums[end] == target:
arr.append([nums[i], nums[start], nums[end]])
print(arr) # [[-1, -1, 2], [-1, 0, 1]]