力扣之陣列3 四數之和

2021-10-01 19:19:31 字數 1433 閱讀 7927

給定乙個包含 n 個整數的陣列 nums 和乙個目標值 target,判斷 nums 中是否存在四個元素 a,b,c 和 d ,使得 a + b + c + d 的值與 target 相等?找出所有滿足條件且不重複的四元組。

解題思路和三數之和類似

唯一區別需要巢狀遍歷陣列,前兩個數a,b分別遍歷迴圈,在迴圈內用雙指標指向另外兩個數c,d.通過移動指標尋找四數之和等於target的陣列

class

solution

:def

foursum

(self, nums: list[

int]

, target:

int)

-> list[list[

int]]:

nums.sort(

) n =

len(nums)

result =

if(not nums or n <4)

:return result

for i in

range

(n-3):

if i >

0and nums[i]

== nums[i -1]

:continue

for b in

range

(i+1

,n-2):

c = b +

1 d = n -

1if b > i +

1and nums[b]

== nums[b-1]

:continue

while c < d:

if nums[i]

+ nums[b]

+ nums[c]

+ nums[d]

== target:

[nums[i]

,nums[b]

,nums[c]

,nums[d]])

while c < d and nums[c]

== nums[c+1]

: c +=

1while c < d and nums[d]

== nums[d-1]

: d -=

1 c +=

1 d -=

1elif nums[i]

+ nums[b]

+ nums[c]

+ nums[d]

< target:

c +=

1else

: d -=

1return result

N數之和(力扣 二三四數之和總結)

本類題可分為兩類,一種是利用雜湊表直接進行查詢,另一種是利用雙指標進行雙向查詢。力扣01.兩數之和 力扣454.四數相加 需要利用雜湊表時的題目特徵 1,多個數不來自於同乙個陣列,這樣不需要考慮同一陣列中重複選擇數字的問題。2,如果數字是來自同乙個陣列,那麼不超過兩個。由於利用雜湊表時是借助其鍵值對...

兩數之和 力扣

這是我寫的第一篇部落格,以前也有過想法,但是總是懶惰,昨晚正好開始刷力扣,就用部落格全程記錄一下吧。刷的第一道題目是兩數之和,題目是這樣的 給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。...

力扣 兩數之和

給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,陣列中同乙個元素不能使用兩遍。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 7 9...