GuilinDev

Lc0532

05 August 2008

532. K-diff Pairs in an Array

给一个整数数组,返回所有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;
    }
}