一个排好序的数组,找出两数之和为x的所有组合

双指针

#include<bits/stdc++.h>
using namespace std;
const int N =1e6,INF=0x3f3f3f3f;
int a[N];
int n,x;
void fun(int n){
    int ans,l=0,r=n-1;
    while(l<r){
        ans=a[l]+a[r];
        if(ans==x){
            printf("%d %d\n",a[l],a[r]);
            l++,r--;
        }
        else if(ans<x){
            l++;
        }
        else{
            r--;
        }
    }
}

int main(){
    while(~scanf("%d%d",&n,&x)){
        for(int i=0;i<n;i++){
            scanf("%d",&a[i]);
        }

        fun(n);
    }
}

猜你喜欢

转载自blog.csdn.net/wrf20162305/article/details/81392883