day07 代码随想录算法训练营 454. 四数相加 II
题目: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