58 四數之和

2022-05-12 02:23:08 字數 934 閱讀 1164

原題**:

四元組(a, b, c, d)中,需要滿足a <= b <= c <= d

答案中不可以包含重複的四元組。

您在真實的面試中是否遇到過這個題?  是

和 target=0. 滿足要求的四元組集合為:

(-1, 0, 0, 1)

(-2, -1, 1, 2)

(-2, 0, 0, 2)

標籤排序

雜湊表兩根指標

陣列思路:沿用三數之和的方法,對陣列排序,然後固定兩個數,再設定兩個指標左右滑動,時間複雜度為o(n^3)。注意每個索引都要去除重複。

ac**:

class

solution

for (int j=i+1;j)

int left=j+1,right=n-1

;

while(leftif (right1&&numbers[right]==numbers[right+1

])

int sum=numbers[i]+numbers[j]+numbers[left]+numbers[right];

if (sum==target)

else

if (sumelse}}

}return

result;

}};

去除重複除了使用if——continue的方式,還可以用while迴圈:

while(left < right && numbers[left] == numbers[left+1])

while(left < right && numbe [right] == numbers[right-1])

此外,還可以用set,參考:

c++中set的用法

其他方法:雜湊表,通過增加空間複雜度來降低時間複雜度:

領扣LintCode問題答案 58 四數之和

領扣lintcode問題答案 58.四數之和 給乙個包含n個數的整數陣列s,在s中找到所有使得和為給定整數target的四元組 a,b,c,d 四元組 a,b,c,d 中,需要滿足a b c d 答案中不可以包含重複的四元組。樣例 1 輸入 2,7,11,15 3 輸出 樣例 2 輸入 1,0,1,...

LintCode 58 四個數之和

給乙個包含n個數的整數陣列s,在s中找到所有使得和為給定整數target的四元組 a,b,c,d 注意事項 四元組 a,b,c,d 中,需要滿足a b c d 答案中不可以包含重複的四元組。例如,對於給定的整數陣列s 1,0,1,0,2,2 和 target 0.滿足要求的四元組集合為 1,0,0,...

兩數之和 三數之和 四數之和

兩數之和意思就是 給你乙個陣列,從中找出兩個數字,讓他們的和等於乙個具體的target。找到所有這樣的兩個數。並且這兩個數字不能完全一樣。n數之和的意思是 給你乙個陣列,從中找出n個數字,讓他們的和等於乙個具體的target。找到所有這樣的n個數。並且這n個數字不能完全一樣。最基礎的,也是最關鍵的就...