题解 | #三数之和#
三数之和
https://www.nowcoder.com/practice/345e2ed5f81d4017bbb8cc6055b0b711
class Solution:
def threeSum(self, num: List[int]) -> List[List[int]]:
if len(num) < 3:
return []
num.sort()
if num[-1] < 0 or num[0] > 0:
return []
res = []
first = 0
while first < len(num):
if num[first] > 0:
break
l, r = first + 1, len(num) - 1
while l < r:
tmp = num[first] + num[l] + num[r]
if tmp == 0:
res.append([num[first], num[l], num[r]])
l += 1
r -= 1
while l < r and num[l - 1] == num[l]:
l += 1
while r > l and num[r + 1] == num[r]:
r -= 1
elif tmp > 0:
r -= 1
else:
l += 1
first += 1
while first < len(num) and num[first] == num[first - 1]:
first += 1
return res
正浩创新EcoFlow公司福利 742人发布