class Solution(object):
def fourSumCount(self, nums1, nums2, nums3, nums4):
dic1 = {}
dic2 = {}
for i in nums1:
for j in nums2:
sum=i+j
if sum in dic1:
dic1[sum] += 1
else:
dic1[sum]=1
for i in nums3:
for j in nums4:
sum=i+j
if sum in dic2:
dic2[sum] += 1
else:
dic2[sum]=1
print dic1,dic2
count = 0
for i in dic1:
if -i in dic2:
count = count+dic2[-i]*dic1[i]
return count
题解:
思路:先将 nums1 和 nums2 的和以及和出现的次数放在 hashmap 中,再计算 -(nums3 + nums4),看其在 hashmap 中是否存在,存在就计入 count 中。
class Solution(object):
def fourSumCount(self, nums1, nums2, nums3, nums4):
# 使用字典存储nums1和nums2中的元素及其和
hashmap = dict()
for n1 in nums1:
for n2 in nums2:
# 写法一
# hashmap[n1+n2] = hashmap.get(n1+n2, 0) + 1
# 写法二
if n1 + n2 in hashmap:
hashmap[n1+n2] += 1
else:
hashmap[n1+n2] = 1
# 如果 -(n1+n2) 存在于nums3和nums4, 存入结果
count = 0
for n3 in nums3:
for n4 in nums4:
key = - n3 - n4
if key in hashmap:
count += hashmap[key]
return count
hashmap.get(n1+n2, 0)
:在 hashmap
中查找键 n1+n2
对应的值。如果找到了这个键,就返回它对应的值。如果没有找到这个键,就返回默认值 0
。