532. K-diff Pairs in an Array
程序员文章站
2022-03-07 19:05:19
...
1,题目要求
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.
找到这样的整数对(i,j),其中i和j都是数组中的数字,它们的绝对差值是k,其中,不计算重复的对。
2,题目思路
一开始,个人的想法是先进行排序,然后再进行遍历,并利用flag来减少每一次的搜索次数。但是这样做下来,发现并不能解决重复的整数对的问题。
对于去除重复出现的数字问题,用自带检查重复的容器是比较好的解决方案,这样的容器即set和map。
对于这个问题,对于满足给定条件的一个整数对,就将这个整数对的较小的数字保存在set中,这样就可以在出现重复的pair时,可以去除重复。
3,程序源码
class Solution {
public:
int findPairs(vector<int>& nums, int k) {
if(k<0) return 0;
unordered_map<int, int> m;
unordered_set<int> s; //保存可以配对成功的较小的数字,用来对重复进行验证
auto n = nums.size();
for(int i = 0;i<n;i++)
{
if(m.count(nums[i]-k)!=0)
s.insert(nums[i]-k);
if(m.count(nums[i]+k)!=0)
s.insert(nums[i]);
m[nums[i]]++;
}
return (int)s.size();
}
};
上一篇: Python的pandas是什么?
下一篇: 前端面试知识点(一)