532. K-diff Pairs in an Array ------Leetcode

public class Solution {
    public int findPairs(int[] nums, int k) {
        HashMap<Integer,Integer> map=new HashMap<>();
        for(int i=0;i<nums.length;i++){
            if(!map.containsKey(nums[i])){
                map.put(nums[i],1);
            }else{
                map.put(nums[i],map.get(nums[i])+1);
            }
        }
        int count=0;
        for(Map.Entry<Integer,Integer>entry:map.entrySet()){
            if(k==0){
                if(entry.getValue()>1){
                    count++;
                }
            }else{
                if(k>0&&map.containsKey(entry.getKey()-k)){
                    count++;
                }
            }
        }
        return count;
    }
}

嗯,挺简单的。。。大概就是用个hashmap记录下每个数字,以及其出现的次数

再次遍历数组,当出现nums [i]-k在map中存在的时候,就自加一,当然0要特殊处理,所以要保存存在的次数。。

有一个问题,就是感觉k<0的时候,{1,2,3,4,5} -1这个输入的时候,明明应该是4是,毕竟比如1-2=-1嘛,但是结果是k<0认为其是0

摊手