站外题,求助
  • 板块学术版
  • 楼主Jasonshan10
  • 当前回复8
  • 已保存回复8
  • 发布时间2023/3/4 13:28
  • 上次更新2023/10/23 23:09:17
查看原帖
站外题,求助
782125
Jasonshan10楼主2023/3/4 13:28

题目描述: 给定一个长度为 n 的数组a 和 k,小信想知道数组中有多少对数相加等于 k 。

输入格式: 第一行包含两个整数 n,k。

第二行 n 个整数 ai。

输出格式: 输出一个整数表示有多少对。

样例1

输入:

3 4

2 2 2

样例1输出:

3

样例2输入:

4 5

3 1 2 4

样例2输出:

2

WA20代码,求调

#include<bits/stdc++.h>
using namespace std;
int a[100001];
int main(){
	int n,k;
    scanf("%d %d",&n,&k);
    for(int i=0;i<n;++i){
    	scanf("%d",&a[i]);
	}
    sort(a,a+n);
    int l=0,r=n-1,ans=0;
    while (l<r){
        if (a[l]+a[r]==k){
            ans++;
            ++l;
			--r;
        }
        else if (a[l]+a[r]>k){
        	--r;
		}
        else{
        	l++;
		}
    }
    printf("%d",ans);
    return 0;
}
2023/3/4 13:28
加载中...