题目

给你一个整数数组 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 的绝对值。

示例

输入:nums = [3, 1, 4, 1, 5], k = 2
输出:2
解释:数组中有两个 2-diff 数对, (1, 3) 和 (3, 5)。
尽管数组中有两个 1 ,但我们只应返回不同的数对的数量。

输入:nums = [1, 2, 3, 4, 5], k = 1
输出:4
解释:数组中有四个 1-diff 数对, (1, 2), (2, 3), (3, 4) 和 (4, 5) 。

输入:nums = [1, 3, 1, 5, 4], k = 0
输出:1
解释:数组中只有一个 0-diff 数对,(1, 1) 。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/k-diff-pairs-in-an-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

方法1:HashSet

Java实现1
class Solution {public int findPairs(int[] nums, int k) {int n = nums.length;Set<Integer> set1 = new HashSet<>();Set<Integer> set2 = new HashSet<>();for (int i = 0; i < n; i++) {for (int j = i + 1; j < n; j++) {if (Math.abs(nums[i] - nums[j]) == k) {int a = nums[i];int b = nums[j];if (a > b) {int tmp = a;a = b;b = tmp;}set1.add(a);set2.add(b);}}}return set1.size();}
}

Java实现2

class Solution {public int findPairs(int[] nums, int k) {Set<Integer> visited = new HashSet<>();Set<Integer> res = new HashSet<>();for (int num : nums) {if (visited.contains(num - k)) {res.add(num - k);}if (visited.contains(num + k)) {res.add(num);}visited.add(num);}return res.size();}
}

力扣 532. 数组中的 k-diff 数对相关推荐

  1. 力扣T51数组中的逆序对--困难

    代码是正确的但是对于超级大的输入时还是超时了. 运用分治排序的思想 import java.util.Arrays; public class 数组中的逆序对 {public static void ...

  2. 第J题-=数组中等于K的数对(详解) =======给出一个整数K和一个无序数组A,A的元素为N个互不相同的整数

    给出一个整数K和一个无序数组A,A的元素为N个互不相同的整数,找出数组A中所有和等于K的数对.例如K = 8,数组A:{-1,6,5,3,4,2,9,0,8},所有和等于8的数对包括(-1,9),(0 ...

  3. Leetcode215数组中第k大的数-最小堆

    题目 在未排序的数组中找到第 k 个最大的元素.请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素. 示例 1: 输入: [3,2,1,5,6,4] 和 k = 2 输出 ...

  4. LeetCode 532. 数组中的K-diff数对

    1. 题目 给定一个整数数组和一个整数 k, 你需要在数组里找到不同的 k-diff 数对. 这里将 k-diff 数对定义为一个整数对 (i, j), 其中 i 和 j 都是数组中的数字,且两数之差 ...

  5. Leetcode 532.数组中的K-diff数对

    数组中的K-diff数对 给定一个整数数组和一个整数 k, 你需要在数组里找到不同的 k-diff 数对.这里将 k-diff 数对定义为一个整数对 (i, j), 其中 i 和 j 都是数组中的数字 ...

  6. 求数组中第k个最小数

    一.问题描述 给定一个数组,数组中的数据无序,在一个数组中找出其第k个最小的数,例如对于数组x,x = {3,2,1,4,5,6},则其第2个最小的数为2. 二.解题思路 本算法跟快排的思想相似,首先 ...

  7. Leetcode 215.数组中第k个最大元素 (每日一题 20210713)

    给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素.请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素.示例 1:输入: [3,2,1,5,6,4] 和 ...

  8. python 数组中第k个最大元素

    数组中第k个最大元素 给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素.请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素.示例 1:输入: [3,2 ...

  9. 线性时间复杂度求数组中第K大数

    求数组中第K大的数可以基于快排序思想,步骤如下: 1.随机选择一个支点 2.将比支点大的数,放到数组左边:将比支点小的数放到数组右边:将支点放到中间(属于左部分) 3.设左部分的长度为L, 当K &l ...

最新文章

  1. yolov3深度解析
  2. ADSL获取的IP地址与网关相同,却能上网的原理
  3. python实现图形旋转_python轻松实现图片旋转
  4. 第十一章:【UCHome二次开发】功能修改
  5. 如何摆脱「自我否定」状态
  6. gx works2 存储器空间或桌面堆栈不足_静态体验奇瑞艾瑞泽GX冠军版,细节做工很精湛...
  7. mybatis-plus+springboot+vue+element-ui实现分页
  8. 基于java在线影院订票系统论文
  9. 计算机程序员三级试题,计算机程序员考试试题及答案.
  10. 【转】Xposed+JustTrustMe关闭SSL证书验证解决无法抓取https包问题
  11. 【C语言】C语言实现strcmp库函数
  12. 毕业设计之 --- 新闻分类系统
  13. keil5工程函数无法跳转到函数定义解决方法
  14. web文件管理系统_实用开源项目,基于Web的文件管理系统——DocSys
  15. 和i77700性能一样的服务器cpu,Intel八代i7 8700K和七代i7 7700K性能对比测验
  16. python圆形_利用 Python 实现裁剪圆形头像
  17. Your IP address is spelled incorrectly问题排查
  18. integer conversion resulted in a change of sign
  19. 上大学的四年---以此结束四年的时光
  20. jQuery 验证码输入错误后自动刷新验证码 点击验证码图片刷新验证码

热门文章

  1. VS2013写智能电子钢琴
  2. Linux工具学习之【git】
  3. SpringBoot启动报错Could not resolve placeholder ‘XXX.XXX‘ in value
  4. MS建模后转成LAMMPS的data文件
  5. python3新式类_Python之新式类与经典类
  6. CODEVS P2833 奇怪的梦境
  7. 安卓高通Diag命令解析
  8. 苹果屏蔽更新描述文件_屏蔽描述文件失效!iOS13屏蔽系统更新方法推荐
  9. Minecraft 1.16.5模组开发(五十) 书籍词典 (Guide Book)
  10. 石头剪刀布(c语言)