为了去重要先对数组进行排序
class Solution:
def threeSum(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
nums.sort()
lenn = len(nums)
res = []
for i in range(lenn-2):
if nums[i] > 0:
break
if i>=1 and nums[i] == nums[i-1]:
continue
j = i + 1
k = lenn-1
while j<k:
sum1 = nums[j] + nums[k]
if sum1 == -nums[i]:
res.append([nums[i],nums[j],nums[k]])
while j < k and nums[j+1] == nums[j]: j+=1
while j <k and nums[k] == nums[k-1]: k-=1
j+=1
k-=1
elif sum1 > -nums[i]:
k-=1
else:
j+=1
return res

本文深入探讨了求解三个数相加等于特定目标值的算法。通过将数组排序并使用双指针技术,有效地解决了三数之和问题,避免了重复解。文章详细介绍了算法的实现过程和关键优化点。
1564

被折叠的 条评论
为什么被折叠?



