# 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; } } ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up