Given an array of integers and an integer k, you need to find the number of unique k-diff pairs in the array. Here a k-diff pair is defined as an integer pair (i, j), where i and j are both numbers in the array and their absolute difference is k.
Example 1:
Input: [3, 1, 4, 1, 5], k = 2
Output: 2
Explanation: There are two 2-diff pairs in the array, (1, 3) and (3, 5).
Although we have two 1s in the input, we should only return the number of unique pairs.
這道題不難粮呢,主要自己想多了岳服。而且要注意細節(jié)
public class Solution {
public int findPairs(int[] nums, int k) {
if(k < 0) return 0;
Map<Integer,Integer> map = new HashMap<>();
int count = 0;
for(int n : nums){
map.put(n,map.getOrDefault(n,0) + 1);
}
for(int key : map.keySet()){
int b = key + k;
if(!map.containsKey(b)) continue;
int n = map.get(b);
int needN = (k == 0 ? 2 : 1);
if(n >=needN){
count++;
map.put(key,1);
}
}
return count;
}
}