【算法练习】85.差的绝对值为 K 的数对数目——计数
⭐加入组队刷题,抱团生长,每天进步⭐
可暴力,也可计数。
——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 的数对数目——计数相关推荐
- 「 每日一练,快乐水题 」2006. 差的绝对值为 K 的数对数目
✅力扣原题: 力扣链接:2006. 差的绝对值为 K 的数对数目 ✅题目简述: 给你一个整数数组 nums 和一个整数 k ,请你返回数对 (i, j) 的数目,满足 i < j 且 |nums ...
- JavaScript——leetcode2006 差的绝对值为k的数对数目
JavaScript--leetcode2006差的绝对值为k的数对数目 题目描述 给你一个整数数组 nums 和一个整数 k ,请你返回数对 (i, j) 的数目,满足 i < j 且 |nu ...
- 哈希表 -leetcode-2006. 差的绝对值为 K 的数对数目
2006. 差的绝对值为 K 的数对数目 提示: 1<=nums.length<=2001 <= nums.length <= 2001<=nums.length< ...
- LeetCode简单题之差的绝对值为 K 的数对数目
题目 给你一个整数数组 nums 和一个整数 k ,请你返回数对 (i, j) 的数目,满足 i < j 且 |nums[i] - nums[j]| == k . |x| 的值定义为: 如果 x ...
- 2006. 差的绝对值为 K 的数对数目
给你一个整数数组 nums 和一个整数 k ,请你返回数对 (i, j) 的数目,满足 i < j 且 |nums[i] - nums[j]| == k . |x| 的值定义为: 如果 x &g ...
- 合并数字 — m个数字消除相邻的差的绝对值为1的两个数中较大的那一个,直到没有两个相邻的差的绝对值为 1 的数(动态数组定义)
题目:合并数字 消除相邻的差的绝对值为1的两个数中较大的那一个.这一天,她得到了 m 个数字,她只能选出最左边的相邻的差的绝对值为 1 的两个数,保留较小的数,泯灭较大的数,直到没有两个相邻的差的绝对 ...
- Java实现 蓝桥杯 算法训练 K好数
算法训练 K好数 时间限制:1.0s 内存限制:256.0MB 提交此题 锦囊1 锦囊2 问题描述 如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数.求L位K ...
- [蓝桥杯][算法训练]K好数(动态规划)
题目描述 如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数.求L位K进制数中K好数的数目.例如K = 4,L = 2的时候,所有K好数为11.13.20.22 ...
- 算法训练 K好数(dp+动态规划)
问题描述 如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数.求L位K进制数中K好数的数目.例如K = 4,L = 2的时候,所有K好数为11.13.20.22 ...
最新文章
- IntelliJ IDEA 的Project structure说明
- iOS-UIWebView添加头部和尾部
- Code review制度推不下去,CTO说我是废物,让我学习“热炉法则”
- 输入年月日,判断为该年的第几天
- BCH区块链上启动新应用程序Chainfeed
- 自定义RadioGrop,支持添加包裹着的RadioButton
- 新鲜的jquery插件收集
- 转轮机加密详解两种解题方法 -攻防世界
- python下timer定时器常用的两种实现方法
- JavaScript中的Window窗口对象【转载】
- android: 静态XML和动态加载XML混合使用,以及重写Layout控件
- c 多文件全局变量_C语言开发单片机为什么大多数都采用全局变量的形式?
- java final定义_Java中final关键字的用法
- c 中html抓取页面图片,【教程】抓取网并提取网页中所需要的信息 之 C#版
- 数学建模入门例题python_用Python分析支付宝轻定投收益--Python数学建模实例
- linux任务调度crontab和at
- 依赖倒置、控制反转、依赖注入
- 如何使用OBS Virtualcam 和 Live2DViewEX 在视频会议中成为最靓的仔
- 解决TeamViewer软件提示试用期已到期无法进行远程操作
- 水清冷冷:PSCC2019/PSCC2020安装教程和学习技巧(附工具)
热门文章
- 你想要的完整解决Python smtplib使用163发送邮件时出现 •554 DT:SPM错误smtplib.SMTPDataError: (554, 'DT:SPM 163 smtp5,HdxpC
- XShell7百度云盘下载
- python 上市公司 概念股_python多线程和多进程获取所有上市公司的实时数据
- 物联网毕设(开源) -- 智能电子称(蓝牙+APP)
- android button背景图片变形,按钮背景图像拉伸(wrap_content或dp使用)
- github使用教程图文详解(一)[入门]
- Oracle之将常驻内存的程序恢复为默认缓冲池
- nestjs任务调度的使用
- SpringBoot整合!Java面试题总结(乱序版
- hana数据库同步到mysql中