class solution:
def foursumcount(self, a, b, c, d):
""":type a: list[int]
:type b: list[int]
:type c: list[int]
:type d: list[int]
:rtype: int
"""# 如果暴力做法就會是o(n^4) 且 0 ≤ n ≤ 500
# 那麼62500000000 這個數量級肯定是不行的
# 因為我們要計數, 所以要用map 或者說是dict
# 要注意的是, 沒有進行特殊情況的判斷
d = {}
for item1 in c:
for item2 in d:
d[item1 + item2] =d.get(item1 + item2, 0) + 1
res = 0
# 時間複雜度 o(n^2)
# 空間複雜度 o(n^2) 因為a中每乙個值 都要與b中的每乙個值進行相加,
# 一般情況下, 他們的數值是不相等的
for item3 in a:
for item4 in b:
tmp = -item3 - item4
res += d.get(tmp, 0)
return res
if __name__ == '__main__':
a = [1, 2]
b = [-2, -1]
c = [-1, 2]
d = [0, 2]
sol = solution()
res = sol.foursumcount(a, b, c, d)
print(res)
leetCode 454 四數相加
目錄 一 題目描述 二 解題思路 三 實現 給定四個包含整數的陣列列表 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 所有整數的範圍在 例如 輸入 a 1,2 b 2,1 ...
leetcode454 四數相加 II
給定四個包含整數的陣列列表 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 例如 輸入 a 1,2...
LeetCode 454 四數相加 II
給定四個包含整數的陣列列表 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 例如 輸入 a 1,2...