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

Leetcode 532. 数组中的 k-diff 数对 [哈希表+双指针]

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

Leetcode 532. 数组中的 k-diff 数对 [哈希表+双指针]

题目 思路

把数组排个序,对于每一个nums[i],都查找一下nums[i]+k是否存在在数组中;如果存在则将这个数对中较小的数字插入到一个哈希表中。最后哈希表中元素的个数就是答案的值。代码还是有挺多细节的

代码
class Solution {
public:
    int findPairs(vector& nums, int k) {
            unordered_set st;
            sort(nums.begin(), nums.end());
            int i, j;
            i = j = 0;
            while(j < nums.size()) {
                while(nums[j]-nums[i] > k) {
                    ++i;
                }
                if(nums[j]-nums[i] == k) {
                    if(i != j) {
                        st.insert(nums[i]);
                        ++i;
                    } else {
                        ++j;
                    }
                }
                while(j < nums.size() && nums[j]-nums[i]
                    ++j;
                }
            }
            return st.size();

    }
};
结果

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/976635.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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