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