454.四數相加
題目:給你四個整數陣列 nums1、nums2、nums3 和 nums4 ,陣列長度都是 n ,請你計算有多少個元組 (i, j, k, l) 能滿足:
0 <= i, j, k, l < n
nums1[i] + nums2[j] + nums3[k] + nums4[l] == 0
解題:
思路:使用map,key為a+b,value為出現次數。再遍歷k、l尋找0-a-b。
關鍵:
- 遍歷1、2陣列並記錄record時,區分次數+1還是=1;
- 遍歷3、4陣列時,找到對應的key來統計對應的value,是相加而不是相乘!!兩個雜湊才相乘
報錯:for i in nums1:而不是range(len(nums1)),遍歷數值而不是下標。
點選檢視程式碼
class Solution:
def fourSumCount(self, nums1: List[int], nums2: List[int], nums3: List[int], nums4: List[int]) -> int:
record={}
count=0
for i in nums1:
for j in nums2:
if i+j in record:
record[i+j]+=1
else:
record[i+j]=1
for k in nums3:
for l in nums4:
if 0-k-l in record:
count+=record[0-k-l]
return count