使用map存储所有元素的出现次数,对于每一个元素k以及其出现次数v,考虑X-k的元素出现次数为y,将其相乘v *y即是对应的i和j的对数,将全部对应的k累加即可,由于i和j没有固定大小,所以最后不需要除以2。
Java
给定长度为N的序列a和非负整数X。小红喜欢满足ai+aj=X的(i,j)对,请求出满足这样条件的(i,j)对数量。
第一行给出一个序列长度N和一个非负整数 X,用空格分隔。
在第二行中,给出了序列a的N个元素,用空格分隔。 1<=N<=105,1<=X<=109,1<=ai<=105
输出一个整数表示最多可以找到多少个满足要求的数对
输入
3 4
1 2 3
输出
3