454. 四数相加2
- 题号:454
- 来源:LeetCode
- 难度:中等
- 标签:
哈希表数组 - 语言:TypeScript
- 解法:1 个
- 作者:lmliheng
- 最近更新:2026-09-27
TypeScript · O(n^2) 时间 · O(n^2) 空间 · 更新于 2026-09-27
两数组和存入哈希表,再查后两组补数
typescript
/**
* @difficulty medium
* @tags 哈希表,数组
* @time O(n^2)
* @space O(n^2)
* @note 两数组和存入哈希表,再查后两组补数
* @454. 四数相加 II
*
*
*/
/**
*
* @哈希表O(n^2)
*/
function fourSumCount(nums1: number[], nums2: number[], nums3: number[], nums4: number[]): number {
const twoSumMap = new Map();
let count = 0;
for (const n1 of nums1) {
for (const n2 of nums2) {
const sum = n1 + n2;
twoSumMap.set(sum, (twoSumMap.get(sum) || 0) + 1)
}
}
for (const n3 of nums3) {
for (const n4 of nums4) {
const sum = n3 + n4;
count += (twoSumMap.get(0 - sum) || 0)
}
}
return count;
};
/**
*
* @暴力O(n^4)
*/
function fourSumCount1(nums1: number[], nums2: number[], nums3: number[], nums4: number[]): number {
let n = nums1.length
let res = 0
nums1.sort()
nums2.sort()
nums3.sort()
nums4.sort()
if ((nums1[n - 1] + nums2[n - 1] + nums3[n - 1] + nums4[n - 1] < 0) || (nums1[0] + nums2[0] + nums3[0] + nums4[0] > 0)) {
return res
}
for (let i = 0; i < n; i++) {
for (let j = 0; j < n; j++) {
for (let k = 0; k < n; k++) {
for (let m = 0; m < n; m++) {
let sum = nums1[i] + nums2[j] + nums3[k] + nums4[m]
if (sum == 0) {
res++
} else if (sum > 0) {
break
}
}
}
}
}
return res
};在 GitHub 上查看题目所在目录:lmliheng/algorithm