您的位置:首页 > 大数据 > 人工智能

[leetcode]-532 K-diff Pairs in an Array

2017-04-04 14:28 423 查看


这道题目不难,注意的点有两点:

1)(i,j)和(j,i)只计算一次

2)同样的(i,j)只计算一次

刚开始一直报错,因为自己定义了结构了“pair”,后来发现是c++中有自带的pair模板类型,这里没有使用,使用了自定义的pairnumtypedef struct pairnum
{
int x;
int y;
};
class Solution {
public:
vector<pairnum> pairs;
int findPairs(vector<int>& nums, int k) {
int len = nums.size();
int total = 0;
for(int i = 0; i < len; ++ i){
for(int j = i+1; j < len; ++ j){
if(abs(nums[i]-nums[j]) == k){
if(!find(nums[i],nums[j],pairs)){
insert(nums[i],nums[j]);
++ total;
}
}
}
}
return total;
}
int find(int x, int y, vector<pairnum>& pairstore){
for(int i = 0; i < pairstore.size(); ++ i){
pairnum e = pairstore[i];
if((e.x == x && e.y == y) ||
(e.x == y && e.y == x)){
return 1;
}
}
return 0;
}
void insert(int x, int y){
pairnum e;
e.x = x;
e.y = y;
pairs.push_back(e);
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息