leetcode 4Sums 四個數相加的和

2022-04-15 18:07:59 字數 917 閱讀 4579

sn

abcd

sabc

dnote:ab

cd)the solution set must not contain duplicate quadruplets.

for example, given array s = , and target = 0.

a solution set is:

(-1, 0, 0, 1)

(-2, -1, 1, 2)

(-2, 0, 0, 2)

給定乙個n個數的陣列s,判斷存在不存在這樣的a,b,c,d使a+b+c+d=target,找出所有的符合條件的值,注意,必須滿足a<=b<=c<=d,舉個例子說,比如陣列s=target=0,

那麼答案是(-1, 0, 0, 1)(-2, -1, 1, 2) (-2, 0, 0, 2)。

演算法思路:① 這個題和上兩篇文章三個數的和類似上兩篇用的是窮舉演算法,這次總不能再用窮舉吧,下面是比較好理解時間複雜度又

比較小的一種演算法。

② 首先對陣列進行排序,設定兩個for迴圈,作為四個數中的前兩個數,有可能有兩個相同的數,遇到相同的數跳過,這樣做是為了避免重複。

③ 四個數中的後兩個數怎麼辦,通過設定兩個指標m和n,m從陣列前往後進行遍歷,n用來從陣列後往前進行遍歷。m>=n是結束迴圈的條件。

④ 遇到target==a+b+c+d的數就加到arraylist中.

**設計():

1

class

solution

3738}39

}40}41

return

arraylist;42}

43 }

此演算法參考了不過他是用c++實現,其思想是一樣的。2013-10-20

week4 B 四個數列

zjm 有四個數列 a,b,c,d,每個數列都有 n 個數字。zjm 從每個數列中各取出乙個數,他想知道有多少種方案使得 4 個數的和為 0。當乙個數列中有多個相同的數字的時候,把它們當做不同的數對待。input 第一行 n 代表數列中數字的個數 1 n 4000 接下來的 n 行中,第 i 行有四...

week4 B 四個數列

zjm 有四個數列 a,b,c,d,每個數列都有 n 個數字。zjm 從每個數列中各取出乙個數,他想知道有多少種方案使得 4 個數的和為 0。當乙個數列中有多個相同的數字的時候,把它們當做不同的數對待。請你幫幫他吧!輸入輸出格式input 第一行 n 代表數列中數字的個數 1 n 4000 接下來的...

Week4 B 四個數列

zjm 有四個數列 a,b,c,d,每個數列都有 n 個數字。zjm 從每個數列中各取出乙個數,他想知道有多少種方案使得 4 個數的和為 0。當乙個數列中有多個相同的數字的時候,把它們當做不同的數對待。第一行 n 代表數列中數字的個數 1 n 4000 接下來的 n 行中,第 i 行有四個數字,分別...