532 K-diff Pairs in an Array
题目描述: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: [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:[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: [1, 3, 1, 5, 4], k = 0 Output: 1 Explanation: There is one 0-diff pair in the array, (1, 1).
题目大意:给定一个数组和一个k,找出数组中两个元素之间的距离为K的所有不重复对的个数。
思路:使用set处理,建立两个set,一个用于存储数组中的数,一个用于存储已经使用的数,然后分两种情况处理,一种是k==0的情况,一种是k不等于0的情况.
代码
package Array; import java.util.*; public class Solution { public int findPairs(int[] nums, int k) { if (nums == null || k < 0 || nums.length == 0) { return 0; } int count = 0; Set<Integer> set = new HashSet<>(); Set<Integer> used = new HashSet<>(); if (k == 0) { for (int num : nums) { if (set.contains(num) && !used.contains(num)) { count++; used.add(num); } else { set.add(num); } } return count; } for (int num : nums) { set.add(num); } for (int num : nums) { if (!used.contains(num) && set.contains(num + k)) { count++; used.add(num); } } return count; } }