数组中的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。