给你一个整数数组 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]

提示:

1 <= nums.length <= 200
1 <= nums[i] <= 100
1 <= k <= 99

最普通解答:

class Solution {
public int countKDifference(int[] nums, int k) {
int count = 0;
for(int i=0; i<nums.length; i++){
for(int j=i+1; j<nums.length; j++){
if(Math.abs(nums[i] - nums[j]) == k){
count++;
}
}
}
return count;
}
}

不使用绝对值函数的解答:(遍历的数目反而多了一半)

class Solution {
public int countKDifference(int[] nums, int k) {
int count = 0;
for(int i=0; i<nums.length; i++){
for(int j=0; j<nums.length; j++){
if(nums[i] - nums[j] == k){
count++;
}
}
}
return count;
}
}

哈希表 + 一次遍历

class Solution {
public int countKDifference(int[] nums, int k) {
int res = 0, n = nums.length;
Map<Integer, Integer> cnt = new HashMap<Integer, Integer>();
for (int j = 0; j < n; ++j) {
res += cnt.getOrDefault(nums[j] - k, 0) + cnt.getOrDefault(nums[j] + k, 0);
cnt.put(nums[j], cnt.getOrDefault(nums[j], 0) + 1);
}
return res;
}
}

2006. 差的绝对值为 K 的数对数目的更多相关文章

  1. 算法训练 K好数

      算法训练 K好数   时间限制:1.0s   内存限制:256.0MB 问题描述 如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数.求L位K进制数中K好数 ...

  2. k好数(动态规划)

    问题描述 如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数.求L位K进制数中K好数的数目.例如K = 4,L = 2的时候,所有K好数为11.13.20.22 ...

  3. [ALGO-3] K好数

    算法训练 K好数   时间限制:1.0s   内存限制:256.0MB 问题描写叙述 假设一个自然数N的K进制表示中随意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数.求L位K进制数中K好数 ...

  4. 蓝桥杯之K好数问题

    问题描述 如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数.求L位K进制数中K好数的数目.例如K = 4,L = 2的时候,所有K好数为11.13.20.22 ...

  5. 蓝桥杯之K好数

    如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数.求L位K进制数中K好数的数目.例如K = 4,L = 2的时候,所有K好数为11.13.20.22.30.3 ...

  6. K好数(DP)

    问题描写叙述 假设一个自然数N的K进制表示中随意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数. 求L位K进制数中K好数的数目. 比如K = 4,L = 2的时候.全部K好数为11.13.2 ...

  7. [蓝桥] 算法训练 K好数

    时间限制:1.0s 内存限制:256.0MB 问题描述 如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数.求L位K进制数中K好数的数目.例如K = 4,L = ...

  8. 算法训练 K好数 解析

    算法训练 K好数 时间限制:1.0s 内存限制:256.0MB 提交此题 锦囊1 锦囊2 问题描述 如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数.求L位K ...

  9. 算法训练 K好数(C/C++)AC码

    蓝桥杯 算法训练 K好数 AC码 题目要求: 算法训练 K好数 问题描述 如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数.求L位K进制数中K好数的数目.例如 ...

  10. k好数 数位dp

    问题描述 如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数.求L位K进制数中K好数的数目.例如K = 4,L = 2的时候,所有K好数为11.13.20.22 ...

随机推荐

  1. 现代IT基础设施管理(1):Terraform初识和小试牛刀

    基础设施包括各种云,像国内的阿里云.腾讯云和华为云,国外的AWS.微软Azure云和谷歌云,还有Kubernetes和OpenStack,都可以用Terraform进行资源管理.使用基础设施即代码(I ...

  2. Cargo deny安装指路

    本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0许可协议.转载请注明来自 唯你 简介 cargo deny 是一个 Rust 工具,用于检查项目依赖项的许可证.安全性和其他合规性问题. ...

  3. Visual Studio 快速分析 .NET Dump 文件

    前言 在开发和维护 .NET 应用程序的过程中,有时会遇到难以捉摸的性能瓶颈或内存泄漏等问题.这些问题往往发生在生产环境中,难以复现.为了更准确地诊断这些运行时问题,通常会收集应用程序在生产环境中的内 ...

  4. 利用sqlmapapi和google-hacking联动自动化sql注入探测

    利用inurl语法搜索+sqlmap梭哈挖到过一点sql注入,这不失为一种好方法. 但是现在的sql注入漏洞的网站是比较少的了,所以这样一个个手工测,不仅效率低,还不一定有什么收获.不妨写一个goog ...

  5. 前端实战之使用canvas合并图片

    最近做一个完整的系统,前端中涉及到一个推广图片的生成,其中推广图片是由一个变化的链接生成的二维码与一个固定图片拼接而成 实现demo: qrcode.png:https://images.cnblog ...

  6. Clickhouse之表函数

    remote, remoteSecure 允许访问远程服务器, 而无需穿件Distributed表, remoteSecure - 与 remote 相同,但是会使用加密链接. 语法: remote( ...

  7. linux 安装 docker

    1.安装 yum-utils yum install -y yum-utils \ device-mapper-persistent-data \ lvm2 --skip-broken 执行如果 报错 ...

  8. DDCA —— 内存一致性

    1. 同步(Synchronization) 1.1 构造锁(Locks) 原子(atomic)执行:应用程序的某些部分必须独占执行(原子性),这意味着在这些部分执行期间,其他并行进程无法访问或修改相 ...

  9. 在TOMCAT8.5使用 JOSSO 单点登录(Agent 端)

    网上找到的玩法都是用 josso 给的命令行工具加工 tomcat,这个办法有不少问题: 1. tomcat8.5 还不支持 2. 很难配置,这让我险些放弃 tomcat8.5,用 tomcat8,但 ...

  10. 若依多模块版本,Linux下用Tomcat部署

    若依多模块版本 简介 下载地址 https://gitee.com/y_project/RuoYi 下载项目,打war包 下载项目 到 Gitee 下载项目 用 idea 打开,会自动下载 pom 依 ...