Leetocde 15
三数之和
class Solution:
def threeSum(self, nums: List[int]) -> List[List[int]]:
ans = list() #初始化返回值为空列表
nums.sort() #将输入列表元素进行升序排序
n = len(nums)
for a in range(n):
if a>0 and nums[a] == nums[a-1]: #如果当前元素与上一个元素相等,跳过当前循环
continue
c = n-1 #初始化指针c,指向最右(最大)的元素
for b in range(b+1,n):
if b>a+1 and nums[b] == nums[b-1]:
continue
while c>b and nums[a]+nums[b]+nums[c]>0 :
c -= 1 #当三数之和大于0时,指针左移,直到和不大于0
if c == b: #如果c与b相等,结束循环
break
if nums[a]+nums[b]+nums[c] == 0:
ans.append([nums[a],nums[b],nums[c]])
return ans