532. K-diff Pairs in an Array

此题不难,主要涉及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;
    }
};
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容