这题考验的是two pointers,也就是从2头开始进行的那种。这题相对算简单。代码如下:
if len(nums) < 3:
return []
alloflist = []
nums.sort()
for i in range(len(nums)):
if nums[i] <= 0:
j = i + 1
k = len(nums) - 1
while j < k:
if nums[j] + nums[k] < -nums[i]:
j = j + 1
elif nums[j] + nums[k] > -nums[i]:
k = k - 1
else:
if [nums[i], nums[j], nums[k]] not in alloflist:
alloflist.append([nums[i], nums[j], nums[k]])
j = j + 1
k = k - 1
else:
break
return alloflist
本文介绍了一种解决三数之和问题的有效算法。通过使用two-pointers技巧,该算法能在排序后的数组中找到所有可能的唯一三元组,使得它们的和为0。文章详细解释了实现过程,并附上了完整的Python代码。
297

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



