美文网首页
[刷题防痴呆] 0532 - 数组中的k-diff数对 (K-d

[刷题防痴呆] 0532 - 数组中的k-diff数对 (K-d

作者: 西出玉门东望长安 | 来源:发表于2021-12-19 10:09 被阅读0次

    题目地址

    https://leetcode.com/problems/k-diff-pairs-in-an-array/

    题目描述

    532. K-diff Pairs in an Array
    
    Given an array of integers nums and an integer k, return the number of unique k-diff pairs in the array.
    
    A k-diff pair is an integer pair (nums[i], nums[j]), where the following are true:
    
    0 <= i < j < nums.length
    |nums[i] - nums[j]| == k
    Notice that |val| denotes the absolute value of val.
    
     
    
    Example 1:
    
    Input: nums = [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: nums = [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: nums = [1,3,1,5,4], k = 0
    Output: 1
    Explanation: There is one 0-diff pair in the array, (1, 1).
    Example 4:
    
    Input: nums = [1,2,4,4,3,3,0,9,2,3], k = 3
    Output: 2
    Example 5:
    
    Input: nums = [-1,-2,-3], k = 1
    Output: 2
    
    

    思路

    • hashmap.
    • 如果k==0, 统计map中count大于1的数的个数.
    • 如果k!=0, 统计map中key + k的个数.

    关键点

    代码

    • 语言支持:Java
    class Solution {
        public int findPairs(int[] nums, int k) {
            Map<Integer, Integer> map = new HashMap<>();
            for (int num: nums) {
                map.put(num, map.getOrDefault(num, 0) + 1);
            }
    
            int count = 0;
            if (k == 0) {
                for (int key: map.keySet()) {
                    if (map.get(key) > 1) {
                        count++;
                    }
                }
            } else {
                for (int key: map.keySet()) {
                    if (map.containsKey(key + k)) {
                        count++;
                    }
                }
            }
    
            return count;
        }
    }
    

    相关文章

      网友评论

          本文标题:[刷题防痴呆] 0532 - 数组中的k-diff数对 (K-d

          本文链接:https://www.haomeiwen.com/subject/rkpefrtx.html