lintcode 1187. 数组中的K-diff对

给定一个整数数组和一个整数k,您需要找到数组中唯一k-diff对的数量。这里k-diff对被定义为整数对(i, j),其中i和j都是数组中的数字,它们的绝对差是k。

样例
样例 1:

输入: [3, 1, 4, 1, 5], k = 2
输出: 2
说明:数组中有两个2-diff对,(1, 3)(3, 5)。
虽然我们在输入中有两个1,但我们应该只返回一对(1,3)。
样例 2:

输入:[1, 2, 3, 4, 5], k = 1
输出: 4
说明:数组中有四个1-diff对, (1, 2), (2, 3), (3, 4)(4, 5).
样例 3:

输入: [1, 3, 1, 5, 4], k = 0
输出: 1
说明:数组中有一个0-diff对,(1, 1).
注意事项
1.对(i,j)(j,i)计为同一对。
2.数组的长度不超过10,000。
3.给定输入中的所有整数都属于以下范围:[ -1e7, 1e7]。
class Solution {
public:
    /**
     * @param nums: an array of integers
     * @param k: an integer
     * @return: the number of unique k-diff pairs
     */
    int findPairs(vector<int> &nums, int k) {
        // Write your code here
        sort(nums.begin(),nums.end());
        int res=0;
        for (int i = 0; i < nums.size(); i++) {
            /* code */
            if(i!=0&&nums[i]==nums[i-1]) continue;
            for(int j=i+1;j<nums.size();j++)
            {
                if(nums[j]-nums[i]>k)break;
                else if(nums[j]-nums[i]==k)  {res++;break;}
            }
        }
        return res;
    }
};
发布了369 篇原创文章 · 获赞 15 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43981315/article/details/103956719