Description,
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:[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 2:
Input: [1, 3, 1, 5, 4], k = 0
Output: 1
Explanation: There is one 0-diff pair in the array, (1, 1).
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].
HashMap solution implemted in Java
HashMap is handy when meeting the “finding K-diff pairs”.
For example, [3, 1, 5, 8] k = 2
You can either sort the list to [1, 3, 5, 8] and iterate the list to find k-diff pairs to achieve O(nlogn).
Or using HashMap to achieve O(n).
The first way will not need extra space(using quick sort), the latter ones need you to build HashMap.
Here, we use the HashMap one to solve the problem.
Time complexity: O(n)
RUntime: 33ms
Runtime: 33ms