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
Table of Contents
1. Problem Statement
Given an array of integers nums
and an integer k
, return the number of unique k-diff pairs in the array.
A 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 Complexity | Space Complexity | |
C++ | O(n) | O(n) |
Java | O(n) | O(n) |
JavaScript | O(n) | O(n) |
Python | O(n) | O(n) |