题目
给定两个升序排序的有序数组 A 和 B,以及一个目标值 x。
数组下标从 00开始。
请你求出满足 A[i]+B[j]=x 的数对 (i,j)。
数据保证有唯一解。
输入格式
第一行包含三个整数 n,m,x,分别表示 A的长度,B的长度以及目标值x。
第二行包含 n 个整数,表示数组 A。
第三行包含 m个整数,表示数组 B。
输出格式
共一行,包含两个整数 i和 j。
暴力做法
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22#include <iostream> using namespace std; const int N=100010; int a[N],b[N]; int main() { int n,m,x; cin>>n>>m>>x; //bool flag=false; for(int i=0;i<n;i++)cin>>a[i]; for(int i=0;i<m;i++)cin>>b[i]; for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { if(a[i]+b[j]==x) //flag=true; cout<<i<<" "<<j<<endl; } } return 0; }
双指针做法
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20#include <iostream> using namespace std; const int N=100010; int a[N],b[N]; int main() { int n,m,x; cin>>n>>m>>x; //bool flag=false; for(int i=0;i<n;i++)cin>>a[i]; for(int i=0;i<m;i++)cin>>b[i]; for(int i=0,j=m-1;i<n;i++) { while(j>=0&&a[i]+b[j]>x)j--; if(a[i]+b[j]==x&&j>=0) //flag=true; cout<<i<<" "<<j<<endl; } return 0; }
最后
以上就是虚心白羊最近收集整理的关于双指针算法-数组元素的目标和的全部内容,更多相关双指针算法-数组元素内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复