A-B 数对 hashmap


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);
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_45736160/article/details/115059026
A-B