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

embedded/2024/11/14 1:53:38/

给你一个整数数组 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.ppmy.cn/embedded/102315.html

相关文章

【C++】函数模板特化:深度解析与应用场景

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &#x1f4e2;本文由 JohnKi 原创&#xff0c;首发于 CSDN&#x1f649; &#x1f4e2;未来很长&#…

代码随想录算法训练营_day25

题目信息 491. 非递减子序列 题目链接: https://leetcode.cn/problems/non-decreasing-subsequences/题目描述: 给你一个整数数组 nums &#xff0c;找出并返回所有该数组中不同的递增子序列&#xff0c;递增子序列中 至少有两个元素 。你可以按 任意顺序 返回答案。 数组中可…

【R语言】基于nls函数的非线性拟合

非线性拟合 1.写在前面2.实现代码 1.写在前面 以下代码记录了立地指数的计算过程&#xff0c;包括了优势树筛选、误差清理、非线性拟合以及结果成图。 优势树木确定以及数据清理过程&#xff1a; 相关导向函数&#xff1a; 2.实现代码 ##*******************************…

CMake构建学习笔记8-OpenSceneGraph库的构建

1. 概论 在连续构建了zlib、libpng、libjpeg、libtiff、giflib以及freetype这几个库之后&#xff0c;接下来我们就要来一个大的&#xff0c;构建OpenSceneGraph这样大型库。OpenSceneGraph&#xff08;简称 OSG&#xff09;是一个高性能、跨平台的三维图形应用程序框架&#x…

『 C++ 』线程库

文章目录 线程库线程的创建与销毁成员函数this_thread 命名空间线程的引用传值 互斥锁互斥锁的基本操作递归锁(可重入锁)定时互斥锁互斥锁管理器与互斥锁抛异常所引发的死锁问题 条件变量条件变量的等待条件变量的唤醒两个线程交替打印奇偶数 线程库 C标准库提供了一套完整的线…

JDK17 隐藏类 Hidden Classes 介绍

在JDK 17中&#xff0c;引入了一个新特性称为隐藏类&#xff08;Hidden Classes&#xff09;。这是一个旨在提高JVM性能和减少内存占用的特性&#xff0c;尤其是在处理大量的Lambda表达式时。隐藏类主要用于解决Lambda表达式的性能问题&#xff0c;并且它们在JDK 17及更高版本中…

【XML详解】

XML基本概念 XML&#xff08;全称EXtensible Markup Language&#xff0c;可扩展标记语言&#xff09;&#xff1a;是一种用于存储和传输数据的标记语言&#xff0c;通过标签&#xff08;tags&#xff09;来定义数据的结构和含义。数据格式&#xff1a;XML本质上是一种数据的格…

Linux 软件编程 数据库

1. 大批量数据存储和管理时使用数据库 2.创建表 create table 表名称(列1 数据类型, 列2 数据类型, ...); 3.插入表 insert into 表名称 values(值1, 值2, ...); 4.查看表 select 列1,列2,... from 表名称 where 匹配条件 order by 列名称 asc/desc; 5.删除表 delete from …