Leetcode 三數之和

2021-09-10 12:35:49 字數 1268 閱讀 8710

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

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

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

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

[[-1, 0, 1],

[-1, -1, 2]

]

先排序,然後從兩端開始向中間搜尋,i為遍歷後的數字,r表示最右端數字,l表示nums[i + 1],每次遍歷後如果三個數字的和為0,就r和l都同時移到下乙個索引(r–,l++),這是因為要求去重,如果只改變乙個還符合條件的話一定是重複的。因為列表是按順序排的,所以和》0, 則說明當前的r偏大,因此r-=1; 反之, 說明當前的l偏小,則把l+=1

class

solution

:def

threesum

(self, nums)

: nums.sort(

) res_list =

for i in

range

(len

(nums)):

if i ==

0or nums[i]

> nums[i-1]

: l = i +

1 r =

len(nums)-1

while l < r:

s = nums[i]

+ nums[r]

+ nums[l]

if s ==0:

[nums[i]

, nums[r]

, nums[l]])

l +=

1 r -=

1while l < r and nums[l]

== nums[l-1]

: l +=

1while r > l and nums[r]

== nums[r+1]

: r -=

1elif s >0:

r -=

1else

: l +=

1return res_list

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...