05 August 2008
给一个整数数组,返回所有unique的pairs,每个pair满足条件:
下标:0 <= i < j < nums.length
绝对值等于给定的k: | nums[i] - nums[j] | == k |
HashMap记录
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class Solution {
public int findPairs(int[] nums, int k) {
if (nums == null || nums.length == 0 || k < 0) {
return 0;
}
Map<Integer, Integer> map = new HashMap<>();
int result = 0;
for (int i : nums) {//计算每个元素的出现次数
map.put(i, map.getOrDefault(i, 0) + 1);
}
for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
if (k == 0) {
if (entry.getValue() >= 2) {//k=0的话,计算出现两次或以上的元素的个数
result++;
}
} else {
if (map.containsKey(entry.getKey() + k)) {
result++;
}
}
}
return result;
}
}