力扣532(java&python)-数组中的 k-diff 数对(中等)
题目:
给你一个整数数组 nums 和一个整数 k,请你在数组中找出 不同的 k-diff 数对,并返回不同的 k-diff 数对 的数目。
k-diff 数对定义为一个整数对 (nums[i], nums[j]) ,并满足下述全部条件:
0 <= i, j < nums.length
i != j
nums[i] - nums[j] == k
注意,|val| 表示 val 的绝对值。
示例 1:
输入:nums = [3, 1, 4, 1, 5], k = 2
输出:2
解释:数组中有两个 2-diff 数对, (1, 3) 和 (3, 5)。
尽管数组中有两个 1 ,但我们只应返回不同的数对的数量。
示例 2:
输入:nums = [1, 2, 3, 4, 5], k = 1
输出:4
解释:数组中有四个 1-diff 数对, (1, 2), (2, 3), (3, 4) 和 (4, 5) 。
示例 3:
输入:nums = [1, 3, 1, 5, 4], k = 0
输出:1
解释:数组中只有一个 0-diff 数对,(1, 1) 。
提示:
- 1 <= nums.length <= 104
- -107 <= nums[i] <= 107
- 0 <= k <= 107
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/k-diff-pairs-in-an-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路:
【哈希表】
1.先使用哈希表,对每个数值出现的次数进行计数,对于出现的重复数,出现的次数需要进行累加;
2.然后就需要根据k是否为0进行分情况讨论:
- 当k == 0时,则需要统计数字出现次数大于1的数的个数,检查value值大于1的数的个数即可;
- 当k != 0时,就判断key值中是否有key - k 或key + k存在,统计存在的个数即可。
java代码:
1 class Solution {
2 public int findPairs(int[] nums, int k) {
3 HashMap<Integer, Integer> map = new HashMap<>();
4 int ans = 0;
5 //给每个值赋上value
6 for(int num : nums){
7 map.put(num, map.getOrDefault(num, 0) + 1);
8 }
9 for(int key : map.keySet()){
10 //当k为0,则需要看出现次数大于1的数的个数
11 if(k == 0){
12 if(map.get(key) > 1) ans++;
13 }else{
14 //k不为0,就判断key值是否有key+k
15 if(map.containsKey(key + k)){
16 ans++;
17 }
18 }
19 }
20 return ans;
21 }
22 }

python3代码:
1 class Solution:
2 def findPairs(self, nums: List[int], k: int) -> int:
3 # 创建空字典
4 map = {}
5 ans = 0
6 for num in nums:
7 # 如果当前数字存在于字典的键中,则value+1
8 if num in map:
9 map[num] += 1
10 else:
11 map[num] = 1
12 # 遍历字典的键值
13 for num,value in map.items():
14 if k == 0:
15 if value > 1:
16 ans += 1
17 else:
18 if num + k in map.keys():
19 ans += 1
20 return ans

力扣532(java&python)-数组中的 k-diff 数对(中等)的更多相关文章
- java将数组中的零放到末尾
package com.shb.java; /** * 将数组中的0放到数组的后边,然后原来的非零数的顺序不改变 * @author BIN * */ public class Demo2{ publ ...
- 【LeetCode】1471. 数组中的 k 个最强值 The k Strongest Values in an Array (Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 自定义排序 日期 题目地址:https://leetc ...
- #7 找出数组中第k小的数
「HW面试题」 [题目] 给定一个整数数组,如何快速地求出该数组中第k小的数.假如数组为[4,0,1,0,2,3],那么第三小的元素是1 [题目分析] 这道题涉及整数列表排序问题,直接使用sort方法 ...
- 3.键盘输入10个数,放到数组中,(1)去除该数组中大于10的数 (2)将该数组中的数字写入到本地文件number.txt中
package cn.it.text; import java.io.FileWriter; import java.io.IOException; import java.util.Scanner; ...
- 【每日一题】【找到位置返回&升序数组中第K大就是n-K小】2022年1月17日-NC88 寻找第K大
描述有一个整数数组,请你根据快速排序的思路,找出数组中第 k 大的数. 给定一个整数数组 a ,同时给定它的大小n和要找的 k ,请返回第 k 大的数(包括重复的元素,不用去重),保证答案存在. 方法 ...
- [LeetCode] Kth Largest Element in an Array 数组中第k大的数字
Find the kth largest element in an unsorted array. Note that it is the kth largest element in the so ...
- 数组中第K小的数字(Google面试题)
http://ac.jobdu.com/problem.php?pid=1534 题目1534:数组中第K小的数字 时间限制:2 秒 内存限制:128 兆 特殊判题:否 提交:1120 解决:208 ...
- 找轮转后的有序数组中第K小的数
我们可以通过二分查找法,在log(n)的时间内找到最小数的在数组中的位置,然后通过偏移来快速定位任意第K个数. 此处假设数组中没有相同的数,原排列顺序是递增排列. 在轮转后的有序数组中查找最小数的算法 ...
- [经典算法题]寻找数组中第K大的数的方法总结
[经典算法题]寻找数组中第K大的数的方法总结 责任编辑:admin 日期:2012-11-26 字体:[大 中 小] 打印复制链接我要评论 今天看算法分析是,看到一个这样的问题,就是在一堆数据 ...
- 选择问题(选择数组中第K小的数)
由排序问题可以引申出选择问题,选择问题就是选择并返回数组中第k小的数,如果把数组全部排好序,在返回第k小的数,也能正确返回,但是这无疑做了很多无用功,由上篇博客中提到的快速排序,稍稍修改下就可以以较小 ...
随机推荐
- 2023中山市第三届香山杯网络安全大赛初赛wp
序 被带飞了 PWN move 先往变量 sskd 写入 0x20 字节,往第二个输入点输入 0x12345678 即可进入到第三个输入点,存在 0x8 字节的溢出.思路是在第一个输入点布置 rop ...
- posix API的一些理解
TCP Posix API的理解 我们主要从TCP连接讲解整个的流程. 连接的建立 消息的收发 连接的断开 连接的建立 先看一下一个TCP server的创建过程. #include<stdio ...
- 使用TS封装操作MongoDB数据库的工具方法
使用TS封装操作MongoDB数据库的工具方法 前言 在做毕业设计过程中采用了MongoDb存储应用的日志信息,总结了一些CRUD方法与大家分享一下,最终使用效果可跳转到业务调用示例这一小节查看 关于 ...
- R语言安装教程
R 语言官方网站:The Comprehensive R Archive Network 官方镜像站列表:CRAN - Mirrors 一.官网下载R安装包 下载地址为:Index of /bin 进 ...
- 为什么SOTA网络在你的数据集上不行?来看看Imagnet结果的迁移能力研究
论文通过实验证明,ImageNet上的模型并不总能泛化到其他数据集中,甚至可能是相反的,而模型的深度和宽度也会影响迁移的效果. 如果需要参考,可选择类别数与当前任务相似的数据集上的模型性能.论文通 ...
- KingbaseES V8R6集群部署案例之---脚本部署节点环境检查故障
KingbaseES V8R6集群部署案例之---脚本部署节点环境检查故障 案例说明: KingbaseES V8R6集群在部署前会对集群节点系统环境进行检测,检测失败后,将中断部署:其中一个检测项, ...
- KingbaseES 实现 MySQL 函数 last_insert_id
用户从mysql迁移到金仓数据库过程中,应用中使用了mysql函数last_insert_id()来获取最近insert的那行记录的自增字段值. mysql文档中关于函数的说明和例子: LAST_IN ...
- Kingbase Create Type 语句使用
Kingbase create type类型创建语句 说明: KingbaseES 数据库中,可以通过CREATE TYPE语句定义一种新的数据类型. 有八种形式的CREATE TYPE.它们分别创建 ...
- Python字典遍历
1 def dict_test(): 2 #初始化字典 3 dict= {"a1":"1","a2":"2"," ...
- OpenHarmony 社区运营报告(2023 年 10 月)
● 截至2023年10月,OpenHarmony社区共有51家共建单位,累计超过6200名贡献者产生24.2万多个PR,2.3万多个Star,6.1万多个Fork,59个SIG. ● OpenHa ...