⭐加入组队刷题,抱团生长,每天进步⭐

可暴力,也可计数。

——leetcode此题热评

前言

哈喽,大家好,我是一条。

糊涂算法,难得糊涂

点击《糊涂算法》系统学习

Question

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]

提示:

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

Solution

首先暴力枚举是肯定可以实现的,但是如何把时间复杂度提升到O(n)

采用计数的思想。

  • 因为题目给了范围,我们可以用一个长度为101的数组。
  • 数的值对应下标的位置,如果该位置有值,置为1。没有值就是0。
  • 依次将相隔为k的两个值相乘,如果为1,说明是1*1,即两个位置都有值,找到一组解。
  • 统计解的个数

Code

所有leetcode代码已同步至github

欢迎star

/*** @author 一条coding*/
class Solution {public int countKDifference(int[] nums, int k) {int[] cnt=new int[101];for(int i=0;i<nums.length;i++){cnt[nums[i]]++;}int ans=0;for(int i=1;i+k<101;i++){ans+=cnt[i]*cnt[i+k];}return ans;}
}

Result

复杂度分析

  • 时间复杂度:O(N)

粉丝福利

⭐今天是坚持刷题更文的第85/100天

⭐各位的点赞、关注、收藏、评论、订阅就是一条创作的最大动力

⭐更多数据结构和算法讲解欢迎关注专栏《糊涂算法》

为了回馈各位粉丝,礼尚往来,给大家准备了一些学习资料

【算法练习】85.差的绝对值为 K 的数对数目——计数相关推荐

  1. 「 每日一练,快乐水题 」2006. 差的绝对值为 K 的数对数目

    ✅力扣原题: 力扣链接:2006. 差的绝对值为 K 的数对数目 ✅题目简述: 给你一个整数数组 nums 和一个整数 k ,请你返回数对 (i, j) 的数目,满足 i < j 且 |nums ...

  2. JavaScript——leetcode2006 差的绝对值为k的数对数目

    JavaScript--leetcode2006差的绝对值为k的数对数目 题目描述 给你一个整数数组 nums 和一个整数 k ,请你返回数对 (i, j) 的数目,满足 i < j 且 |nu ...

  3. 哈希表 -leetcode-2006. 差的绝对值为 K 的数对数目

    2006. 差的绝对值为 K 的数对数目 提示: 1<=nums.length<=2001 <= nums.length <= 2001<=nums.length< ...

  4. LeetCode简单题之差的绝对值为 K 的数对数目

    题目 给你一个整数数组 nums 和一个整数 k ,请你返回数对 (i, j) 的数目,满足 i < j 且 |nums[i] - nums[j]| == k . |x| 的值定义为: 如果 x ...

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

    给你一个整数数组 nums 和一个整数 k ,请你返回数对 (i, j) 的数目,满足 i < j 且 |nums[i] - nums[j]| == k . |x| 的值定义为: 如果 x &g ...

  6. 合并数字 — m个数字消除相邻的差的绝对值为1的两个数中较大的那一个,直到没有两个相邻的差的绝对值为 1 的数(动态数组定义)

    题目:合并数字 消除相邻的差的绝对值为1的两个数中较大的那一个.这一天,她得到了 m 个数字,她只能选出最左边的相邻的差的绝对值为 1 的两个数,保留较小的数,泯灭较大的数,直到没有两个相邻的差的绝对 ...

  7. Java实现 蓝桥杯 算法训练 K好数

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

  8. [蓝桥杯][算法训练]K好数(动态规划)

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

  9. 算法训练 K好数(dp+动态规划)

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

最新文章

  1. IntelliJ IDEA 的Project structure说明
  2. iOS-UIWebView添加头部和尾部
  3. Code review制度推不下去,CTO说我是废物,让我学习“热炉法则”
  4. 输入年月日,判断为该年的第几天
  5. BCH区块链上启动新应用程序Chainfeed
  6. 自定义RadioGrop,支持添加包裹着的RadioButton
  7. 新鲜的jquery插件收集
  8. 转轮机加密详解两种解题方法 -攻防世界
  9. python下timer定时器常用的两种实现方法
  10. JavaScript中的Window窗口对象【转载】
  11. android: 静态XML和动态加载XML混合使用,以及重写Layout控件
  12. c 多文件全局变量_C语言开发单片机为什么大多数都采用全局变量的形式?
  13. java final定义_Java中final关键字的用法
  14. c 中html抓取页面图片,【教程】抓取网并提取网页中所需要的信息 之 C#版
  15. 数学建模入门例题python_用Python分析支付宝轻定投收益--Python数学建模实例
  16. linux任务调度crontab和at
  17. 依赖倒置、控制反转、依赖注入
  18. 如何使用OBS Virtualcam 和 Live2DViewEX 在视频会议中成为最靓的仔
  19. 解决TeamViewer软件提示试用期已到期无法进行远程操作
  20. 水清冷冷:PSCC2019/PSCC2020安装教程和学习技巧(附工具)

热门文章

  1. 你想要的完整解决Python smtplib使用163发送邮件时出现 •554 DT:SPM错误smtplib.SMTPDataError: (554, 'DT:SPM 163 smtp5,HdxpC
  2. XShell7百度云盘下载
  3. python 上市公司 概念股_python多线程和多进程获取所有上市公司的实时数据
  4. 物联网毕设(开源) -- 智能电子称(蓝牙+APP)
  5. android button背景图片变形,按钮背景图像拉伸(wrap_content或dp使用)
  6. github使用教程图文详解(一)[入门]
  7. Oracle之将常驻内存的程序恢复为默认缓冲池
  8. nestjs任务调度的使用
  9. SpringBoot整合!Java面试题总结(乱序版
  10. hana数据库同步到mysql中