【LeetCode】532. K-diff Pairs in an Array

来源:互联网 发布:oracle数据库自学视频 编辑:程序博客网 时间:2024/06/12 21:22

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 = 2Output: 2Explanation: 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 = 1Output: 4Explanation: 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 = 0Output: 1Explanation: There is one 0-diff pair in the array, (1, 1).
题解:两指针,排序后;两指针同时遍历注意j必须大于i还有题目的唯一性必须跳过相同元素
int findPairs(vector<int>& nums, int k) {    sort(nums.begin(),nums.end());    int ans=0;    for(int i=0,j=1;i<nums.size();i++)    {        j=max(j,i+1);        while(j<nums.size()&&nums[j]-nums[i]<k){            j++;        }        if(nums[j]-nums[i]==k)ans++;        while(i+1<nums.size()&&nums[i]==nums[i+1])i++;    }    return ans;}