leetcode454 四數相加 II

2021-08-20 06:51:36 字數 893 閱讀 5929

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...