15 三數之和

2021-09-29 12:50:52 字數 1245 閱讀 2076

"""

給定乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c ,使得 a + b + c = 0 ?找出所有滿足條件且不重複的三元組。

注意:答案中不可以包含重複的三元組。

例如, 給定陣列 nums = [-1, 0, 1, 2, -1, -4],

滿足要求的三元組集合為:

[ [-1, 0, 1],

[-1, -1, 2]

]"""

defthreesum

(nums)

: nums.sort(

)# 時間複雜度nlogn

res, k =

,0for k in

range

(len

(nums)-2

):if nums[k]

>0:

break

if k>

0and nums[k]

== nums[k-1]

:continue

i, j = k +1,

len(nums)-1

while i < j:

s = nums[k]

+ nums[i]

+ nums[j]

if s <0:

i +=

1while i < j and nums[i]

==nums[i-1]

: i +=

1elif s >0:

j -=

1while i < j and nums[j]

== nums[j+1]

: j -=

1else

:[nums[k]

, nums[i]

, nums[j]])

i +=

1 j -=

1while i== nums[i-1]

: i +=

1while i < j and nums[j]

== nums[j+1]

: j -=

1return res

nums =[-

1,0,

1,2,

-1,-

4]print

(threesum(nums)

)

15 三數之和

給定乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c 使得 a b c 0 找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組。例如,給定陣列 nums 1,0,1,2,1,4 滿足要求的三元組集合為 1,0,1 1,1,2 最首先想到的是來三層...

15 三數之和

給定乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c 使得 a b c 0 找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組。有兩種寫法 第一種耗時久,但容易解讀 class solution if nums.length 3 else if ...

15 三數之和

給定乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c 使得 a b c 0 找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組。例如,給定陣列 nums 1,0,1,2,1,4 滿足要求的三元組集合為 1,0,1 1,1,2 分析排序 雙指標避免...