15. 三数之和
题目描述
给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。
注意:答案中不可以包含重复的三元组。
原题请参考链接https://leetcode-cn.com/problems/3sum/
题解
方法一 【排序+双指针(快慢指针)】
class Solution:
def threeSum(self, nums: List[int]) -> List[List[int]]:
l = len(nums)
res = []
nums.sort()
for a in range(l):
if a>0 and nums[a] == nums[a-1]:
continue
c = l - 1
for b in range(a+1,l):
if b>a+1 and nums[b] == nums[b-1]:
continue
while b < c and nums[b] + nums[c] > -nums[a]:
c -= 1
if b==c:
break
if nums[b] + nums[c] + nums[a] == 0:
res.append([nums[a],nums[b],nums[c]])
return res
python

浙公网安备 33010602011771号