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

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

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

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

刚开始一直报错,因为自己定义了结构了“pair”,后来发现是c++中有自带的pair模板类型,这里没有使用,使用了自定义的pairnum

typedef 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);
    }
};


猜你喜欢

转载自blog.csdn.net/ljh0302/article/details/69062687