def fan(nums):
list1 = []
length = len(nums)
nums.sort()
for i in range(length):
if nums[i] > 0:
break
if i > 0 and nums[i] == nums[i - 1]:
continue
left = i + 1
right = length - 1
while left < right:
temp = nums[left] + nums[right] + nums[i]
if temp > 0:
right -= 1
elif temp < 0:
left += 1
else:
list1.append([nums[left], nums[i], nums[right]])
while left < right and nums[right] == nums[right - 1]:
right -= 1
while left < right and nums[left] == nums[left + 1]:
left += 1
left += 1
right -= 1
return list1
print(fan([1, 0, 0, 0, 2, 5, -1, -5, 1]))
判断给定的数组中是否可以找到三个数字的组合满足求和等于o,并返回所有不重复的组合。
最新推荐文章于 2022-07-06 01:31:36 发布