当前位置: 首页 > news >正文

【Leetcode 2006 】 差的绝对值为 K 的数对数目 —— 哈希表

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

|x| 的值定义为:

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

示例 1:

输入:nums = [1,2,2,1], k = 1
输出:4
解释:差的绝对值为 1 的数对为:
- [1,2,2,1]
- [1,2,2,1]
- [1,2,2,1]
- [1,2,2,1]

示例 2:

输入:nums = [1,3], k = 3
输出:0
解释:没有任何数对差的绝对值为 3 。

示例 3:

输入:nums = [3,2,1,5,4], k = 2
输出:3
解释:差的绝对值为 2 的数对为:
- [3,2,1,5,4]
- [3,2,1,5,4]
- [3,2,1,5,4]

哈希表

/*
https://leetcode.cn/u/cshappyeveryday/
执行用时:55 ms, 在所有 Typescript 提交中击败了100.00%的用户
内存消耗:52.49 MB, 在所有 Typescript 提交中击败了50.00%的用户
2024年8月26日 
*/
function countKDifference(nums: number[], k: number): number {const numMap = new Map<number, number>();let res = 0;for (const n of nums) {numMap.set(n, (numMap.get(n) || 0) + 1);}for (const n of nums) {// nums[i] - nums[j] = k// nums[i] = nums[j] + kconst sum = k + n;// 这里不需要把自己排队在外,因为题目中规定 k >= 1 && nums[i] >= 1// 而 nums[j] + k !== nums[j] (除非有0的存在)// 所以在搜索中,不会找到自身if (numMap.has(sum)) {res += numMap.get(sum)!;}}return res;
}


http://www.mrgr.cn/news/12939.html

相关文章:

  • 数字签名:信息安全的新屏障
  • Nginx实现反向代理负载均衡实验
  • 【C/C++】C语言如何判断字符长度
  • git笔记:git常用命令备忘录
  • 信息安全--哈希算法 Hash
  • Ps:首选项 - 历史记录
  • Git 远程操作
  • MySQL的延迟复制
  • sqli-labs靶场通关攻略(41-45关)
  • 什么软件可以用平板远程控制电脑?
  • 「2.1」收集雪花
  • Windows提取微信聊天记录,将其导出成HTML、Word、Excel文档永久保存
  • 【鸿蒙学习】HarmonyOS应用开发者高级认证 - 应用开发安全(含闯关习题)
  • bypass disable_function绕过
  • 第二百零六节 Java正则表达式教程 - Java 正则表达式查找/替换
  • 02 vue3之ref全局桶
  • git restore对工作区及暂存区文件的影响
  • 在Ubuntu系统中安装R语言并使用R Markdown
  • java Boss直聘爬虫数据分析
  • 首次突破:蒙面仿人控制器实现全身运动的多模态追踪与现实世界控制