K-diff Pairs in an Array LeetCode Solution

Last updated on February 4th, 2025 at 12:53 am

Here, we see a K-diff Pairs in an Array LeetCode Solution. This Leetcode problem is solved using different approaches in many programming languages, such as C++, Java, JavaScript, Python, etc.

List of all LeetCode Solution

Topics

Array, Two Pointers

Companies

Amazon

Level of Question

Medium

K-diff Pairs in an Array LeetCode Solution

K-diff Pairs in an Array LeetCode Solution

1. Problem Statement

Given an array of integers nums and an integer k, return the number of unique k-diff pairs in the array.

k-diff pair is an integer pair (nums[i], nums[j]), where the following are true:

  • 0 <= i, j < nums.length
  • i != j
  • |nums[i] - nums[j]| == k

Notice that |val| denotes the absolute value of val.

Example 1:
Input: nums = [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.

Example 2:
Input: nums = [1,2,3,4,5], k = 1
Output: 4
Explanation: There are four 1-diff pairs in the array, (1, 2), (2, 3), (3, 4) and (4, 5).

Example 3:
Input: nums = [1,3,1,5,4], k = 0
Output: 1
Explanation: There is one 0-diff pair in the array, (1, 1).

2. Coding Pattern Used in Solution

The coding pattern used in this code is “Hash Map for Frequency Counting”. This pattern involves using a hash map (or dictionary) to store the frequency of elements in an array, and then iterating over the hash map to perform specific operations based on the problem’s requirements.

3. Code Implementation in Different Languages

3.1 K-diff Pairs in an Array C++

class Solution {
public:
    int findPairs(vector<int>& nums, int k) {
        unordered_map<int,int> a;
        for(int i:nums)
            a[i]++;
        int ans=0;
        for(auto x:a){
            if(k==0){    
                if(x.second>1)
                ans++;
            }
             else if(a.find(x.first+k)!=a.end())
                ans++;
        }
        return ans;
    }
};

3.2 K-diff Pairs in an Array 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 result = 0;
 		for (int i : map.keySet())
 			if (k > 0 && map.containsKey(i + k) || k == 0 && map.get(i) > 1)
 				result++;
 		return result;
 	}
}

3.3 K-diff Pairs in an Array JavaScript

var findPairs = function(nums, k) {
	if(nums.length === 0 || k < 0) return 0
	let myMap = new Map(),
		count = 0
	for(num of nums){
		myMap.set(num,(myMap.get(num)+1) || 1)
	}
	myMap.forEach((value,key) =>{
		if(k === 0){
			if(value > 1) count++
		}
		else{
			if(myMap.has(key+k)) count++
		}
	})
	return count
};

3.4 K-diff Pairs in an Array Python

class Solution(object):
    def findPairs(self, nums, k):
        cnt=0
        c=Counter(nums)
        if k==0:
            for key,v in c.items():
                if v>1:
                    cnt+=1
        else:
            for key,v in c.items():
                if key+k in c:
                    cnt+=1
        return cnt

4. Time and Space Complexity

Time ComplexitySpace Complexity
C++O(n)O(n)
JavaO(n)O(n)
JavaScriptO(n)O(n)
PythonO(n)O(n)
Scroll to Top