题目链接
英文链接:https://leetcode.com/problems/4sum-ii/
中文链接:https://leetcode-cn.com/problems/4sum-ii/
题目详述
给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l)
,使得 A[i] + B[j] + C[k] + D[l] = 0
。
为了使问题简单化,所有的 A, B, C, D 具有相同的长度 N,且 0 ≤ N ≤ 500 。所有整数的范围在 -228 到 228 - 1 之间,最终结果不会超过 231 - 1 。
例如:
1 | 输入: |
题目详解
- 运用四重循环暴力枚举的时间复杂度为
O(n^4)
,效率比较低。 - 更好的方式是折半,枚举数组
A
和数组B
,运用哈希表存储两者之和a + b
出现的次数。 - 再枚举数组
C
和数组D
,在哈希表中查询-(c + d)
出现的次数,累加到结果中。 - 时间复杂度为
O(n^2)
。
1 | public class LeetCode_00454 { |