数组中的K-diff数对(Java)

数组中的K-diff数对

题目:

给定一个整数数组和一个整数 k, 你需要在数组里找到不同的 k-diff 数对。这里将 k-diff 数对定义为一个整数对 (i, j), 其中 i 和 j 都是数组中的数字,且两数之差的绝对值是 k.

思想:

使用hash统计<数值,数值对应的个数>, 使用hashMap.KetSet遍历非重复数值, k==0: 数值对应的个数>=2 则 sum++; k > 0, (数值 + k)再hashMap中存在,sum++

代码:

class Solution{
    public int findPairs(int[] nums, int k){
        int sum = 0;
        if(k < 0){
            return sum;
        }    
        HashMap<Integer , Integer> hashMap = new HashMap<>();
        for(int i = 0; i < nums.length;i++){
            hashMap.put(nums[i],hashMap.getOrDefault(nums[i],0) + 1);    
        }
        for(int i: hashMap.keySet()){
            if(k == 0){
                if(hashMap.get(i) > 1) 
                    sum ++;
            }else{
                if(hashMap.containsKey(i + k)){
                    sum++; 
                }        
            }    
        }     
        return sum; 
    }
}

getOrDefault(key,defaultValue):当Map集合中有这个key时,就使用这个key值,如果没有就使用默认值defaultValue。

发布了36 篇原创文章 · 获赞 2 · 访问量 974

猜你喜欢

转载自blog.csdn.net/y18771025420/article/details/102796894