Leetcode 15 三數之和

2021-10-03 02:55:29 字數 1543 閱讀 4712

提要

用法示例

lambda

:x,y:x+y

#等價於

deftest

(x,y)

:return x+y

用法示例

dic=

test1=dic.get(

"a")

test2=dic.get(

"c",0)

#otput:test1=b,test2=0

用法示例

a=[-

1,-2

,0,3

,4]b=

filter

(lambda x:x<

0,a)

c=list

(b)#output:b=,c=[-1,-2]

#解釋:可以看出第二行**的作用是過濾掉大於或等於零的元素然後將列表賦值給b,可為什麼b輸出的結果是一串位址呢?因為序列經過過濾器的處理之後僅能得到乙個filter物件,要得到真正的列表還需經過list()方法的處理。

#ps:若過濾器作用於字典,那麼篩選的是鍵。

思路步驟

推演

示例

class

solution

:def

threesum

(self, nums: list[

int])-

> list[list[

int]]:

result=

#初始化結果集

nums_dic=

#初始化雜湊表(模擬雜湊,以字典形式存在)

for i in nums:

nums_dic[i]

=nums_dic.get(i,0)

+1#計算每個元素出現次數,和元素作為值鍵對傳入雜湊表。(給不存在的鍵賦值時,它們會作為新的鍵值對追加到字典中)

#根據鍵的正負將其過濾為兩個列表

ne=list

(filter

(lambda x: x<

0,nums_dic)

) po=

list

(filter

(lambda x: x>=

0,nums_dic)

)#獲取特殊結果放入結果集if0

in nums_dic and nums_dic[0]

>=3:

[0,0

,0])

#進入迴圈

for i in ne:

for j in po:

k=0-i-j

if k in nums_dic:

if k in

(i,j)

:if nums_dic[k]

>=2:

[i,j,k]

)if kj:

[i,j,k]

)return result

LeetCode 15 三數之和

15.給定乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c 使得 a b c 0 找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組 方法一,個人解法正確,但是效率太低,時間複雜度o n 3 時間超時,無法提交至leetcode public s...

leetcode 15 三數之和

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

leetcode15 三數之和

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