数组元素的目标和
題目描述
給定兩個(gè)升序排序的有序數(shù)組A和B,以及一個(gè)目標(biāo)值x。數(shù)組下標(biāo)從0開(kāi)始。
請(qǐng)你求出滿足A[i] + B[j] = x的數(shù)對(duì)(i, j)。
數(shù)據(jù)保證有唯一解。
輸入格式
第一行包含三個(gè)整數(shù)n,m,x,分別表示A的長(zhǎng)度,B的長(zhǎng)度以及目標(biāo)值x。
第二行包含n個(gè)整數(shù),表示數(shù)組A。
第三行包含m個(gè)整數(shù),表示數(shù)組B。
輸出格式
共一行,包含兩個(gè)整數(shù) i 和 j。
數(shù)據(jù)范圍
數(shù)組長(zhǎng)度不超過(guò)100000。
同一數(shù)組內(nèi)元素各不相同。
1≤數(shù)組元素≤109
輸入樣例:
4 5 6
1 2 4 7
3 4 6 8 9
輸出樣例:
1 1
解題思路
因?yàn)榻o定的兩個(gè)數(shù)組是單調(diào)遞增的,所以用i從數(shù)組A的0位置開(kāi)始,j從數(shù)組B的最后一個(gè)位置開(kāi)始,如果j>=0&&A[i] + B[j] >x 那么就讓j往前走,如果等x,break掉
代碼實(shí)現(xiàn)
#include<iostream> using namespace std;const int N = 100010; int a[N],b[N]; int n,m,x; int main() {cin>>n>>m>>x;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) {printf("%d %d\n",i,j);break;}}return 0; }總結(jié)
- 上一篇: 双龙传剧情介绍
- 下一篇: Xshell链接不上云服务器的解决方案