2091 - 双指针-练习-数组元素的目标和
c++刷题 超能力编程
(暴力枚举) O(n2)
暴力就不说了 两重循环
我们可以一遍哈希法
输入A组的时候 哈希表记录数值和数值所在数组的索引
在输入B数组的时候 输入一个值 直接计算需要查找的值 也就是 X-input
如果存在这里值 打印这个值在A数组的索引 + 空格 + 当前数字的索引
两种方法奉上:
#include <unordered_map>
#include <iostream>
#include <vector>
#include <set>
using namespace std;
int n,m,x;
unordered_map<int,int> ma;
unordered_map<int,int> mb;
int main()
{
scanf("%d %d %d",&n,&m,&x);
int t;
for(int i = 0;i <n;i++){
scanf("%d",&t);
ma[t] = i;
}
for(int i = 0;i <m;i++){
scanf("%d",&t);
int find = x-t;
if(ma.count(find) != 0){
cout << ma[find] << " " << i << endl;
}
}
return 0;
}
#include <unordered_map>
#include <iostream>
#include <vector>
#include <set>
using namespace std;
int n,m,x;
unordered_map<int,int> ma;
unordered_map<int,int> mb;
int main()
{
scanf("%d %d %d",&n,&m,&x);
int t;
for(int i = 0;i <n;i++){
scanf("%d",&t);
ma[t] = i;
}
for(int i = 0;i <m;i++){
scanf("%d",&t);
int find = x-t;
if(ma.count(find) != 0){
cout << ma[find] << " " << i << endl;
}
}
return 0;
}