1.Description
给出一串数以及一个数字 C,要求计算出所有 A−B=C的数对的个数,其中 A,B 为给定的一串数中的数字(两个数对只要对应的下标不完全相同,即为两个不同的数对)。
2.Example
输入
输入共两行。
第一行两个整数 N(1<=N<=200,000),C 。
第二行 N个整数,作为要求处理的那串数。
保证所有输入数据都在 32位带符号整数范围内(注意可能存在负数)。
输出
一行,表示该串数中包含的满足 A−B=C 的数对的个数。
样例输入
4 1
1 1 2 3
样例输出
3
3.Solution
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int c = sc.nextInt();
int count = 0;
if(n==1) {
System.out.println(count);
return;
}
Map<Integer, Integer> hashMap = new HashMap<Integer, Integer>();
for(int i=0;i<n;i++) {
int num = sc.nextInt();
if(hashMap.containsKey(num)) {
hashMap.put(num, hashMap.get(num)+1);
}else {
hashMap.put(num, 1);
}
}
for (Integer key : hashMap.keySet()) {
if(hashMap.containsKey(key+c)) {
count += hashMap.get(key+c)*hashMap.get(key);
}
}
System.out.println(count);
}
}