为了使问题简单化,所有的 A, B, C, D 具有相同的长度 N,且 0 ≤ N ≤ 500 。所有整数的范围在 -228 到 228 - 1 之间,最终结果不会超过 231 - 1 。...时间复杂度为 O(n^4)
优化一: 使用一个哈希集合存储其中的一个数组, 三层 for 循环把剩下三个数组的组合都过一遍, 并查询哈希集合中是否存在能满足条件的元素值存在....时间复杂度为 O(n^3)
优化二: 使用一个哈希映射, key 为两个数组中元素组合值之和, value 为两数和的值出现的次数(因为任意元素组合之和可能相同), 两层 for 循环将剩余两个数组所有组合过一遍..., 找到满足条件的 key , 总次数与对应 value 值累加, 最优解, 时间复杂度为 O(n^2)
哈希映射解题:
Java:
class Solution {
public int fourSumCount...(-c-d, 0) # 找到满足条件的 key , 总次数与对应 value 值累加 (因为value 代表 A, B 数组中符合条件的组合的次数)
return count