給你乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c ,使得 a + b + c = 0 ?請你找出所有滿足條件且不重複的三元組。
注意:答案中不可以包含重複的三元組。
示例:
給定陣列 nums = [-1, 0, 1, 2, -1, -4],滿足要求的三元組集合為:
[ [-1, 0, 1],
[-1, -1, 2]
]
思路:先對陣列進行排序,然後使用雙指標,左右逼近,遍歷陣列作為外層迴圈,重點是去重,left或right碰到相同數字則往下跳乙個
classsolution(object):
defthreesum(self, nums):
""":type nums: list[int]
:rtype: list[list[int]]
"""#
-4,-1,-1,0,1,2
#第一步,判斷邊界
res =
nums.sort()
n=len(nums)
for i in range(n-2):
if i==0 or nums[i]>nums[i-1]:#
去重
left,right = i+1,n-1
while leftident = nums[i]+nums[left]+nums[right]
if ident==0:
left+=1right-=1
#去重while leftand nums[left]==nums[left-1]:
left+=1
while leftand nums[right]==nums[right+1]:
right-=1
elif ident<0:
left+=1
else
: right-=1
return res
leetcode 三數之和
給定乙個包含 n 個整數的陣列nums,判斷nums中是否存在三個元素 a,b,c 使得 a b c 0 找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組。例如,給定陣列 nums 1,0,1,2,1,4 滿足要求的三元組集合為 1,0,1 1,1,2 因為這次是要求輸出對應的三...
LeetCode 三數之和
題目描述 給定乙個包含 n 個整數的陣列nums,判斷nums中是否存在三個元素 a,b,c 使得 a b c 0 找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組。例如,給定陣列 nums 1,0,1,2,1,4 滿足要求的三元組集合為 1,0,1 1,1,2 題目分析 有序陣...
Leetcode 三數之和
解決方案一 class solution else if nums j nums k target else while i 1 1 i return lllist 解決方案2 class solution 如果有3個0,就直接作為乙個解 if zerosize 3 res.add arrays.a...