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].

The leetcode link

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

public class Solution {
    /**
    * returns the k-diff pair count by using HashMap
    * @param  int[] input nums stored in int[]
    * @param  int int k defines the absolute difference.
    * @return int 
    */
    public int findPairs(int[] nums, int k) {
        int ret = 0;
        if (k < 0) return ret; // The test case was playing devil's advocate,
                               // I don't feel it is needed, at all! Since k should be "absolute value"!
        HashMap<Integer, Integer> map = new HashMap<>();
        for (int num : nums) {
            map.put(num, map.getOrDefault(num, 0) + 1);
        }
        
        for (int key : map.keySet()) {
            if (k == 0) {
                if (map.get(key) > 1)   ret++;
            }
            else if (map.containsKey(key+k)) {
                ret++;
            }

        }
        
        return ret;
    }
}

imgRuntime: 33ms