栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

每日一题-LeetCode532-数组中的k-diff数对

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

每日一题-LeetCode532-数组中的k-diff数对

原题链接

Note:

开两个hash表,一个用来记录答案的数对,一个用来记录访问过的数
其中,以为要求答案的数对是不能重复的,那么记录过程中只需要记录其中的一个端点即可(大的小的都行)

每次遍历的就看做是j每次位置能构成数对的,就是j - k, j + k这样只需要去看看访问过的里面有没有这两个数,有则说明可以构成数对,把他存成答案,j+k一定是数对的右端点,我的代码里把他当做答案,存到答案hash里

如果是j-k存在了,那么就给答案里插入这种情况的有端点t

代码如下:
class Solution {
public:
    int findPairs(vector& nums, int k) {
        unordered_set visited, res;
        for(auto t : nums){
            if(visited.count(t + k))
                res.emplace(t + k);
            if(visited.count(t - k))
                res.emplace(t);
            visited.emplace(t);
        }
        return res.size();
    }
};
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/980396.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号