• 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
    • i != j
    • |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
    

    Constraints:

    • 1 <= nums.length <= 104
    • -107 <= nums[i] <= 107
    • 0 <= k <= 107
    class Solution {
        public int findPairs(int[] nums, int k) {
            Map<Integer, Integer> map = new HashMap();
            for(int i : nums) {
                map.put(i, map.getOrDefault(i, 0) + 1);
            }
            int res = 0;
            for(int i : nums) {
                if(k == 0 && map.get(i) > 1) {
                    res++;
                    map.put(i, 0);
                }
                else if(k != 0 && map.containsKey(i + k) && map.get(i + k) != 0) {
                    res++;
                    map.put(i + k, 0);
                }
            }
            return res;
        }
    }

    特殊情况:k == 0,先把数字和频率存到map

    然后要判断k是否=0,如果是,就看这个数是否出现2次或以上,然后把频率变0(防止重复)

    k≠0,就看有没有对应的key,有就更新频率为0(防止重复)

  • 相关阅读:
    Emacs for OIer 的一些配置
    CF1336E Chiori and Doll Picking 【线性代数,组合计数】
    CF605E Intergalaxy Trips 【贪心,动态规划,期望】
    Luogu6329 【模板】点分树 | 震波
    [SDOI2014]数表
    [BZOJ4403]序列统计
    [BZOJ5099]Pionek
    SP1812 LCS2
    SA & SAM
    [HAOI2016]找相同字符
  • 原文地址:https://www.cnblogs.com/wentiliangkaihua/p/13775790.html
Copyright © 2020-2023  润新知