题解 | #牛牛的三元组问题#
牛牛的三元组问题
https://www.nowcoder.com/practice/72c6d735fb1144a2ba162976a4510839
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param nums int整型一维数组
# @return int整型二维数组
#
class Solution:
def findTriplets(self , nums: List[int]) -> List[List[int]]:
# write code here
res = []
n = len(nums)
nums.sort()
for i in range(n-2):
if i>0 and nums[i] == nums[i-1]:
continue
if nums[i] + nums[i+1] + nums[i+2] > 0:
break
elif nums[i] + nums[-1] + nums[-2] < 0:
continue
j,k = i+1,n-1
while j < k:
if nums[i] + nums[j] + nums[k] == 0:
res.append([nums[i],nums[j],nums[k]])
j += 1
k -= 1
while j < k and nums[j] == nums[j-1]:
j += 1
while j < k and nums[k] == nums[k+1]:
k -= 1
elif nums[i] + nums[j] + nums[k] > 0:
k -= 1
while j < k and nums[k] == nums[k+1]:
k -= 1
else:
j += 1
while j < k and nums[j] == nums[j-1]:
j += 1
res = sorted(res)
return res
三数之和 最后排个序