程式碼隨想錄演算法訓練營第七天 |

Y荷兰豆Y發表於2024-06-11

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. 遍歷1、2陣列並記錄record時,區分次數+1還是=1;
  2. 遍歷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

相關文章