首页 > 数字组合
头像 在刷题的单身狗很开心
发表于 2023-09-05 09:03:39
首先最容易想到的是暴力的四层遍历,时间复杂度为O(n^4)。 对最后一层的遍历可以改成二分查找,时间复杂度为O(n^3logn)。 但上两种方式都会超时。 有四个数字序列,可以联想到先使用二重循环将前两个和后两个序列的所有结果求出来。 然后在根据前一个求出来的序列去二分寻找后一个序列中符合要求的有多 展开全文
头像 Fss1
发表于 2025-03-19 17:36:46
一种基于哈希表的解法 与二分的解法相似,把a[i] + b[j]的所有结果放到ab数组里面 不同的是,可以使用哈希表存储从c[i] + d[j] 用m.count(-ab)可以在最好是o(1)的时间复杂度下找到a+b+c+d = 0 但是题目数据好像卡了 哈希表解法最好的时间复杂度是O(n^2), 展开全文
头像 阴暗臭嘴顺直贴吧男
发表于 2025-08-16 16:00:10
基于哈希表的解法 #include <bits/stdc++.h> #define int long long using namespace std; const int N = 1e6 + 10; int a[N], b[N], c[N], d[N], scd[N]; void so 展开全文

等你来战

查看全部