給定四個包含整數的陣列列表 a , b , c , d ,計算有多少個元組 (i, j, k, l) ,使得 a[i] + b[j] + c[k] + d[l] = 0。為了使問題簡單化,所有的 a, b, c, d 具有相同的長度 n,且 0 ≤ n ≤ 500 。所有整數的範圍在 -228 到 228 - 1 之間,最終結果不會超過 231 - 1 。
輸入:(0, 0, 0, 1) -> a[0] + b[0] + c[0] + d[1] = 1 + (-2) + (-1) + 2 = 0a = [ 1, 2]
b = [-2,-1]
c = [-1, 2]
d = [ 0, 2]
輸出:2
解釋:兩個元組如下:
(1, 1, 0, 0) -> a[1] + b[1] + c[0] + d[0] = 2 + (-1) + (-1) + 0 = 0
1.暴力求解,四個迴圈巢狀,o(n^4),超時
2.拆分和hash,將四個數分為兩兩之和,然後在判斷這兩個數相加是否為0,由於需要查表,這裡選用unordered_map來儲存兩數之和,時間複雜度o(n^2)
class
solution
};
四數之和為target
給定乙個包含 n 個整數的陣列 nums 和乙個目標值 target,判斷 nums 中是否存在四個元素 a,b,c 和 d 使得 a b c d 的值與 target 相等?找出所有滿足條件且不重複的四元組。注意 答案中不可以包含重複的四元組。給定陣列 nums 1,0,1,0,2,2 和 tar...
兩數之和 三數之和 四數之和
兩數之和意思就是 給你乙個陣列,從中找出兩個數字,讓他們的和等於乙個具體的target。找到所有這樣的兩個數。並且這兩個數字不能完全一樣。n數之和的意思是 給你乙個陣列,從中找出n個數字,讓他們的和等於乙個具體的target。找到所有這樣的n個數。並且這n個數字不能完全一樣。最基礎的,也是最關鍵的就...
演算法 兩數之和,三數之和,四數之和
給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 ...