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

devtools/2024/9/23 21:19:27/

给你一个整数数组 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/devtools/102506.html

相关文章

设计模式--适配器模式

适配器模式 适配器模式&#xff08;Adapter Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许一个接口&#xff08;通常是新的或现有的&#xff09;与另一个不兼容的接口一起工作。适配器模式主要用于解决接口不匹配的问题&#xff0c;让原本由于接口不兼容而不能一…

《数据结构(C语言版)第二版》第七章-查找(7.2-7.3.1)

7.2 线性表的查找&#xff08;适用于静态查找表&#xff09; 7.2.1 顺序查找 #include <stdio.h> #include <stdlib.h>#define MAXSIZE 100typedef int KeyType; typedef char InfoType;//数据元素类型定义 typedef struct {KeyType Key;InfoType otherinfo; }El…

MMsegmentation与MMdeploy简单使用

最近涉及到了图像分割的任务&#xff0c;于是拿来写下博客加深下使用。 MMsegmentation与MMdeploy的环境配置暂不做讲解&#xff0c;在官网和其他博客中有很多说明。 MMdeploy主要是把pt转为 onnx_int8的情况。 MMsegmentation环境配置可以参考 : 安装与配置MMSegmentation 目录…

访问者模式深入解析:轻松添加新操作,无需修改对象结构!

访问者模式&#xff08;Visitor Pattern&#xff09;是一种行为型设计模式&#xff0c;它允许你在不修改已有代码结构的情况下&#xff0c;为对象结构中的元素添加新的操作。 访问者模式通过将操作定义在一个访问者类中&#xff0c;该类带有一系列访问方法&#xff0c;用于对对…

FFmpeg的入门实践系列四(AVS)

欢迎诸位来阅读在下的博文~ 在这里&#xff0c;在下会不定期发表一些浅薄的知识和经验&#xff0c;望诸位能与在下多多交流&#xff0c;共同努力 文章目录 前期博客参考书籍一、AVS简介二、基于FFmpeg配置AVS2 前期博客 FFmpeg的入门实践系列一(环境搭建) FFmpeg的入门实践系列…

【Java】Java 设计模式之工厂模式与策略模式

Java设计模式是软件工程中一系列被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结&#xff0c;它们代表了最佳的实践&#xff0c;帮助开发者解决在软件设计过程中遇到的各种问题。这些模式可以根据其用途分为三大类&#xff1a;创建型、结构型和行为型&#xff0…

贪心算法---分发糖果

题目&#xff1a; n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。 你需要按照以下要求&#xff0c;给这些孩子分发糖果&#xff1a; 每个孩子至少分配到 1 个糖果。相邻两个孩子评分更高的孩子会获得更多的糖果。 请你给每个孩子分发糖果&#xff0c;计…

PHP多门店民宿酒店预订系统小程序源码

&#x1f3e8;✨「多门店酒店民宿预订系统」——一键解锁全球住宿新体验&#xff01;&#x1f30d;&#x1f3e0; &#x1f31f; 开篇种草&#xff1a;旅行新伙伴&#xff0c;预订无忧&#xff01; 嘿小伙伴们&#xff0c;是不是每次计划旅行都被繁琐的酒店民宿预订搞得头大&…