前言
题目: 454. 四数相加 II
文档: 代码随想录——四数相加 II
编程语言: C++
解题状态: 思路错误
思路
四个数组简单地使用 f o r for for循环的话,时间复杂度就太高了,一种有效的方法就是化四为二,两两形成一个整体,再进行简单的处理。
代码
哈希表
class Solution {
public:
int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4) {
std::unordered_map<int, int> umap;
int res = 0;
for (int a : nums1) {
for (int b : nums2) {
umap[a + b]++;
}
}
for (int c : nums3) {
for (int d : nums4) {
if (umap.find(0 - c - d) != umap.end()) {
res += umap[0 - c - d];
}
}
}
return res;
}
};
- 时间复杂度: O ( n 2 ) O(n^2) O(n2)
- 空间复杂度: O ( n 2 ) O(n^2) O(n2)