一.问题描述
给定两个升序排序的有序数组 A 和 B,以及一个目标值 x。
数组下标从 0 开始。
请你求出满足 A[i]+B[j]=x 的数对 (i,j)。
二.设计思路
- i 指针从 a数组 从前往后 开始遍历
- j 指针从 b数组 从后往前 开始遍历
- 若 a[i]+b[j]>k 说明要缩小区间使和变小 即 j–,反之i++
三.流程图
四.伪代码
1
五.代码实现
#include<iostream>
using namespace std;
const int N=1e5+10;
int a[N],b[N];
int main(){
int n,m,k;
cin>>n>>m>>k;
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(a[i]+b[j]>k)j--;
if(a[i]+b[j]==k){
cout<<i<<" "<<j;
break;
}
}
return 0;
}
标签:遍历,int,18,每日,数组,打卡,指针 From: https://www.cnblogs.com/leapssisbird/p/17382865.html