美文网首页
532. K-diff Pairs in an Array

532. K-diff Pairs in an Array

作者: 乘瓠散人 | 来源:发表于2017-11-14 15:43 被阅读21次

    此题不难,主要涉及C++中vector数组去重操作。

    • unique函数是一个去重函数,去除相邻中的重复元素(只留一个)。
      其中,关键的是:去除并不是把重复的元素删除,而是全部放到数组的最后。

    为了去除重复的元素,首先应该对数组vector进行排序,这样保证重复元素在相邻的位置。

    • unique函数,返回的是去重后的尾地址。
      因此对于一个内容为{2, 2, 5, 5, 6}的vector,执行unique函数以后,vector大小并没有改变,只不过顺序变成了{2, 5, 6, 2, 5},并且函数的返回值为3。此时需要删除重复元素,只需要将后面的数据全部删除即可。
    class Solution {
    public:
        int findPairs(vector<int>& nums, int k) {
            if(nums.size()==0)
                return 0;
            sort(nums.begin(), nums.end());
            int cnt=0;
            if(k==0){
                
                for(int i=0;i<nums.size()-1;i++){
                    if(nums[i]==nums[i+1]){
                        while((i+1)<nums.size() && nums[i]==nums[i+1]){
                            i++;
                        }
                        cnt++;
                    }
                }
                return cnt;
                
            }
            
            nums.erase(unique(nums.begin(), nums.end()), nums.end());
            int n=nums.size();
            cnt=0;
            for(int i=0;i<n-1;i++){
                for(int j=i+1;j<n;j++){
                    int tmp = abs(nums[j]-nums[i]);
                    if(tmp==k)
                        cnt++;
                }
            }
            return cnt;
        }
    };
    

    相关文章

      网友评论

          本文标题:532. K-diff Pairs in an Array

          本文链接:https://www.haomeiwen.com/subject/pdlfvxtx.html