題目描述:
給定乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c ,使得 a + b + c = 0 ?找出所有滿足條件且不重複的三元組。
注意:答案中不可以包含重複的三元組。
示例:
本題採用的是排序 + 雙指標的方法,思路如下:
python code:
def
threesum
(nums):if
len(nums)
<3:
return
iflen
(nums)==3
andsum
(nums)!=0
:return
k, res =0,
nums.sort(
)for k in
range
(len
(nums)):
if nums[k]
>0:
break
if k >
0and nums[k]
== nums[k-1]
:continue
low, high = k+1,
len(nums)-1
while low < high:
if nums[k]
+ nums[low]
+ nums[high]==0
:[nums[k]
, nums[low]
, nums[high]])
low +=
1 high -=
1# 遇到重複元素跳過
while low < high and nums[low]
== nums[low -1]
: low +=
1while low < high and nums[high]
== nums[high +1]
: high -=
1elif nums[k]
+ nums[low]
+ nums[high]
<0:
low +=
1# 遇到重複元素跳過
while low < high and nums[low]
== nums[low-1]
: low +=
1elif nums[k]
+ nums[low]
+ nums[high]
>0:
high -=
1# 遇到重複元素跳過
while low < high and nums[high]
==nums[high +1]
:high -=
1return res
threesum([-
1,0,
1,2,
-1,-
4])out:[[
-1,-
1,2]
,[-1
,0,1
]]
參考: 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...