class Solution:
def threeSum(self, nums: List[int]) -> List[List[int]]:
n = len(nums)
res = []
if (not nums or n < 3):
return []
nums.sort()
res = []
for i in range(n):
if (nums[i]>0):
return res
# 两个相邻的数相同,直接进入下一循环,避免重复解
if (i>0 and nums[i]==nums[i-1]):
continue
L = i + 1
R = n - 1
while(L<R):
if (nums[i] + nums[L] + nums[R] == 0):
res.append([nums[i],nums[L],nums[R]])
# 避免两个相邻的数相同,造成重复解
while(L<R and nums[L]==nums[L+1]):
L = L+1
while(L<R and nums[R]==nums[R-1]):
R = R-1
L = L+1
R = R-1
elif(nums[i] + nums[L] + nums[R]>0):
R = R - 1
else:
L = L + 1
return res
三数之和()
最新推荐文章于 2024-10-13 15:10:00 发布