---
# System prepended metadata

title: 0532. K-diff Pairs in an Array
tags: [Leetcode, HashMap, Medium]

---

# 0532. K-diff Pairs in an Array
###### tags: `Leetcode` `Medium` `HashMap`
Link: https://leetcode.com/problems/k-diff-pairs-in-an-array/
## 思路
一开始试的方法是
建一个set 然后遍历 如果前面如果没有出现过相同字母 那么如果前面有num+k ans++ 有num-k ans++
这样就会保证所有的pair都是distinct
但后来发现k可能=0
方法就不成立了

正确方法参考[这里](https://leetcode.com/problems/k-diff-pairs-in-an-array/discuss/100135/JavaPython-Easy-Understood-Solution)
用map存下每个num出现的次数
然后遍历map的key
如果k>0 检查num-k（为了防止重复）
如果k=0 检查cnt(num)是否大于1
## Code
```java=
class Solution {
    public int findPairs(int[] nums, int k) {
        Map<Integer, Integer> map = new HashMap<>();
        for(int num: nums){
            map.put(num, map.getOrDefault(num, 0)+1);
        }
        int ans = 0;
        for(int num: map.keySet()){
            if(k>0 && map.containsKey(num-k)) ans++;
            else if(k==0 && map.get(num)>1) ans++;
        }
        return ans;
    }
}
```