2006. 差的绝对值为 K 的数对数目

题目

给你一个整数数组 nums 和一个整数 k ,请你返回数对 (i, j) 的数目,满足 i < j|nums[i] - nums[j]| == k

|x| 的值定义为:

  • 如果 x >= 0 ,那么值为 x 。
  • 如果 x < 0 ,那么值为 -x 。

来源:力扣(LeetCode)


解答

通过哈希表来存储每一个数字出现的次数,然后依次遍历,由于是求绝对值,所以相差为k的数字,要么是当前数字减k,要么是加k,然后依次通过哈希表查找对应的数目,最终除以二即得最终结果。

class Solution {
public:
    int countKDifference(vector<int>& nums, int k) {
        unordered_map<int, int> mp;
        int ret = 0;

        for (auto i: nums) {
            mp[i]++;
        }

        for (auto i: nums) {
            ret += mp[i - k] + mp[i + k];
        }

        return ret/2;
    }
};
我的力扣每日一题 文章被收录于专栏

就是力扣每日一题的记录,解法可能存在参考,但一定是我自己理解和口述的。 题解更注重理解,而不是为了缩短代码行数,为了精简而精简。

全部评论

相关推荐

求个付费实习岗位:这种就是吃满时代红利又没啥技术水平,只能靠压力学生彰显优越感的老登,别太在意了
点赞 评论 收藏
分享
10-29 18:20
济南大学 Java
用微笑面对困难:他不是人事吗,怎么净特么不干人事
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务