Sponsored
Sponsored
This approach uses a HashMap to track the frequency of each element in the array. For each unique element, we will check if there's another element that can form a k-diff pair with it. When k is zero, we need to check if there are duplicates present in the list.
Time Complexity: O(n) because we iterate over the array and then over the hashmap that is bounded by a constant size. Space Complexity: O(n) to store the frequency map.
1function findPairs(nums, k) {
2 let map = new Map();
3 let count = 0;
4 for (let num of nums) {
5 map.set(num, (map.get(num) || 0) + 1);
6 }
7 for (let [key, val] of map) {
8 if (k == 0) {
9 if (val > 1) count++;
10 } else if (map.has(key + k)) {
11 count++;
12 }
13 }
14 return count;
15}This JavaScript solution uses a Map to keep a count of array elements, transitioning through the map entries to establish k-diff pairs, with special handling for k=0.
This approach involves sorting the array initially, then using two pointers to determine unique k-diff pairs. The array being sorted helps us efficiently reduce potential pair checks, and ensure pairs are considered only once.
Time Complexity: O(n log n) due to sorting. Space Complexity: O(1) if disregard input.
1functionJavaScript's solution first sorts the array, letting two pointers sieve the array for pairs with k differences. With special handling of duplicates, the unique k-diff pairs are effectively derived.