leetcode454. 四數相加 II
阿新 • • 發佈:2018-11-17
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)