zoukankan      html  css  js  c++  java
  • LeetCode532. K-diff Pairs in an Array

    Description

    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).

    my program

    思路:本题主要需要理解题目中给出的k-diff这个新概念,明白了后就不难解出答案。
    利用一个map储存数组中的数字,以及出现的次数。当k=0的时候,统计map中value大于1的key的数目,即为所求k-diff的个数;当k>0的时候查找key=key+k在map中是否存在,若存在即k-diff对,count+1

    class Solution {
    public:
        int findPairs(vector<int>& nums, int k) {
            int count = 0;
            if (k < 0) return count;
            map<int, int> mp;
            for (auto number : nums) {
                mp[number]++;
            }
            map<int, int>::iterator it;
            if (k == 0) {
                for (it = mp.begin(); it != mp.end(); it++) {
                    if (it->second > 1)
                        count++;
                }
            }
            else {
                for (it = mp.begin(); it != mp.end(); it++) {
                    if (mp.find(it->first+k) != mp.end())
                        count++;
                }
            }
            return count;
        }
    };

    Submission Details
    72 / 72 test cases passed.
    Status: Accepted
    Runtime: 39 ms

  • 相关阅读:
    转:C/C++基本数据类型所占字节数
    转:为什么C++中空类和空结构体大小为1?
    转:内存字节对齐
    转:100层楼扔两个鸡蛋的问题
    移动互联网
    辗转相除法
    斐波那契数列
    error C2783: 无法为“T”推导 模板 参数
    创新工场和海豚浏览器宣讲会启示
    转:快速排序的一个小问题没想明白,求助各位
  • 原文地址:https://www.cnblogs.com/yangjiannr/p/7391330.html
Copyright © 2011-2022 走看看