K-diff Pairs in an Array

给一个数组和一个k, 找出数组中有多少个pair, 满足pair的两个数的差是k的. 这个题有些corn care是k是负的..所以要先判断k的值, 然后用一个map做counter,记录数字出现的次数, 然后利用map的key的唯一性, 遍历所有key in keySet. 记录有多少pair. 还需要注意k==0的时候, 同一个数出现两次以上, 也可以作为一个pair.

class Solution {
    public int findPairs(int[] nums, int k) {
        if(nums == null || nums.length == 0 || k < 0)
            return 0;
        int res = 0;
        Map<Integer, Integer> map = new HashMap<>();
        for(int n : nums) {
            map.put(n, map.getOrDefault(n, 0) + 1);
        }
        for(int n : map.keySet()) {
            if(k == 0 && map.get(n) >= 2) // k == 0, [1,1] is a pair
                res ++;
            if(k != 0 && map.containsKey(n+k)) // k != 0, find another pair
                res ++;
        }
        return res;
    }
}