day07 代码随想录算法训练营 454. 四数相加 II

发布时间 2024-01-03 14:23:43作者: o蹲蹲o

题目:454. 四数相加 II

我的感悟:

  • 把握题意:这道题目是四个独立的数组,只要找到A[i] + B[j] + C[k] + D[l] = 0就可以
  • 有点像上学那会,提醒自己要注意题意。审题很关键。审题的要点是要明白题目说什么。

理解难点:

  • 为什么可以只遍历AB和CD,不遍历AC和BD?
    • 都可以,因为只要A+B+C+D=0 就可以。哪个都行。
  • 不需要去重,题目给了4个数组,是4个独立的数组。

代码难点:

  • 学会字典的get用法
  • 复习昨天的关键词enumerate [ ɪˈnjuːməreɪt] 返回下标和值

总结概括:

  • 追逐梦想很快乐!

代码示例:

class Solution:
    def fourSumCount(self, nums1: List[int], nums2: List[int], nums3: List[int], nums4: List[int]) -> int:
        # 题目要求返回次数,不用去重
        res = 0 # 记录次数
        mapper = {} # 记录A,B组的结果

        for a in nums1:
            for b in nums2:
                mapper[a+b] = mapper.get(a+b,0) + 1 # 如果有的话,存次数
        
        for c in nums3:
            for d in nums4:
                key = -(c+d)
                res += mapper.get(key,0)    # 获取里面的值,否则加0,加0就是不进行操作
        return res
        

 

通过截图:

资料:

代码随想录:四数之和