Reference: LeetCode
Difficulty: Easy
Problem
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)
, wherei
andj
are both numbers in the array and their absolute difference isk
.
Example:
1 | Input: [3, 1, 4, 1, 5], k = 2 |
Note:
- The pairs
(i, j)
and(j, i)
count as the same pair. - The length of the array won’t exceed
10,000
. - All the integers in the given input belong to the range:
[-1e7, 1e7]
.
Analysis
Hash Map
Note:
- If
k == 0
, we only consider duplicates. - Since
(i, j)
and(j, i)
are counted as 2, we should divide the result by 2 before returning it.- Actually, we don’t need to do it that way.
1 | public int findPairs(int[] nums, int k) { |
Optimization:
1 | public int findPairs(int[] nums, int k) { |
Time: $O(N)$
Space: $O(N)$