Leetcode 三數之和

2021-10-03 04:35:07 字數 1507 閱讀 6683

題目描述:

給定乙個包含 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...