15 三數之和

2021-09-27 03:07:27 字數 1270 閱讀 5140

題目.

middle意思

這個其實就是twosum的公升級,另外有個技巧就是先排序,然後在生成的結果中保證a[0] <= a[1] <= a[2]就可以達到去重的目的

package main

import

("fmt"

"sort"

)func

twosum

(numoccur map

[int

]int

, numunique [

]int

, target int)[

][]int

occur, ok := numoccur[t]

if!ok

if t != v

)continue

}if t == v && occur >1)

}}return result

}func

threesum

(nums [

]int)[

][]int

numoccur :=

make

(map

[int

]int

)for

_, v :=

range nums

numunique :=

make([

]int,0

,len

(numoccur)

)for k :=

range numoccur

sort.

ints

(numunique)

for i, v :=

range numunique

//1 v

for_

, subv :=

range

twosum

(numoccur, numunique[i+1:

],0-v)

//2 vs

if numoccur[v]

>=

2&& v <0)

}}//3vs

if numoccur[v]

>=

3&& v ==0)

}}return result

}func

main()

))}

o(n*n)

o(n*n)

執行用時 :1372 ms, 在所有 go 提交中擊敗了60.84%的使用者

記憶體消耗 :42.8 mb, 在所有 go 提交中擊敗了99.77%的使用者

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