15 三數之和

2022-08-10 06:09:15 字數 1216 閱讀 3642

15. 三數之和

難度中等1904收藏分享切換為英文關注反饋

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

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

示例:

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

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

[ [-1, 0, 1],

[-1, -1, 2]

]

#暴力法

def threesum(nums):

results =

if not nums:

return none

from collections import counter

vocab = counter(nums)

for i in range(len(nums)):

vocab = counter(nums)

for j in range(i):

vocab[nums[i]] -= 1

vocab[nums[j]] -= 1

if -(nums[i]+nums[j]) in vocab and vocab[-(nums[i]+nums[j])]>0:

return results

#排序,雙指標

def threesum(nums):

results =

if not nums or len(nums)<3:

return

nums.sort()

for i in range(n):

if(nums[i]>0):#陣列已經排序,大於0之後不會有三數和為0

return results

if(i>0 and nums[i]==nums[i-1]):#去重,i-1位置符合要求的陣列已經統計過,i位置和i-1數值相等,得到的結果也是重複

continue

l=i+1

r=n-1

while(l0):

r=r-1

else:

l=l+1

return res

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 分析排序 雙指標避免...