LeetCode每日一题,454. 4Sum II
先看题目描述
大意就是给定四个数组 A,B,C 和 D,问存在的四元组 (i,j,k,l) 使得 A[i] + B[j] + C[k] + D[l] = 0 的数量
算法和思路
分组+哈希表
将四个数组分成两部分,A 和 B 分为一组,C 和 D 分为另外一组
对于 A 和 B,使用二重循环对它们进行遍历,得到所有 A[i] + B[j] 的值并存入哈希表中,对于哈希表中的每个键值对,键 A[i] + B[j] 对应的值就是 A[i] + B[j] 出现的次数
对于 C 和 D,同样使用二重循环对它们进行遍历。当遍历到 C[k] + D[l] 时,若哈希表的键中存在 -C[k] - D[l],则将其对应的值累加到答案上,最后即可得到满足 A[i] + B[j] + C[k] + D[l] = 0 的四元组的数量
算法源码
1 | import java.util.*; |