目 录CONTENT

文章目录

800. 数组元素的目标和

不争
2024-01-02 / 0 评论 / 0 点赞 / 24 阅读 / 1312 字

800. 数组元素的目标和

image-20220117202855341

暴力枚举解法

#include<iostream>
using namespace std;
const int N = 1000010;
int A[N],B[N];
int main(){

    int n, m, x;
    scanf("%d%d%d",&n,&m,&x);

    for(int i = 0 ; i < n ; i ++) scanf("%d",&A[i]);

    for(int i = 0 ; i < m ; i ++) scanf("%d",&B[i]);

    for(int i = 0 ; i < n ; i ++){
        for(int j = 0 ; j < m ; j ++){
            if(A[i] + B[j] == x){
                cout << i << " "<< j << endl;
                break;
            }
        }
    }
}

双指针

#include<iostream>
using namespace std;
const int N = 1000010;
int A[N],B[N];
int main(){

    int n, m, x;
    scanf("%d%d%d",&n,&m,&x);

    for(int i = 0 ; i < n ; i ++) scanf("%d",&A[i]);

    for(int i = 0 ; i < m ; i ++) scanf("%d",&B[i]);

    for(int i = 0 , j = m - 1 ;  i < n ; i ++){
        // i 指向头, j指向尾巴 ,a+b大于则 j-- 
        while(j >= 0 && A[i]+B[j] > x) j--;
        if(A[i]+B[j] == x){
            printf("%d %d\n",i, j);
            break;
        }
    }
    return 0;
}
0

评论区