领扣LintCode算法问题答案-1187. 数组中的K-diff对
发布日期:2021-06-30 17:10:14 浏览次数:2 分类:技术文章

本文共 1455 字,大约阅读时间需要 4 分钟。

领扣LintCode算法问题答案-1187. 数组中的K-diff对

目录

1187. 数组中的K-diff对

描述

给定一个整数数组和一个整数 k ,您需要找到数组中唯一 k-diff 对的数量。这里 k-diff 对被定义为整数对 (i, j),其中 ij 都是数组中的数字,它们的绝对差是 k

  1. 对(i,j)和(j,i)计为同一对。
  2. 数组的长度不超过10,000。
  3. 给定输入中的所有整数都属于以下范围:[ -1e7, 1e7]。

样例 1:

输入: [3, 1, 4, 1, 5], k = 2输出: 2说明:数组中有两个2-diff对,(1, 3)和(3, 5)。虽然我们在输入中有两个1,但我们应该只返回一对(1,3)。

样例 2:

输入:[1, 2, 3, 4, 5], k = 1输出: 4说明:数组中有四个1-diff对, (1, 2), (2, 3), (3, 4) 和 (4, 5).

样例 3:

输入: [1, 3, 1, 5, 4], k = 0输出: 1说明:数组中有一个0-diff对,(1, 1).

题解

public class Solution {
/** * @param nums: an array of integers * @param k: an integer * @return: the number of unique k-diff pairs */ public int findPairs(int[] nums, int k) {
// Write your code here int ret = 0; Arrays.sort(nums); Set
uniqueRecord = new HashSet<>(); for (int i = 0; i < nums.length; i++) {
for (int j = i + 1; j < nums.length; j++) {
int lowNum = nums[i]; int highNum = nums[j]; if (highNum - lowNum > k) {
break; } if (highNum - lowNum == k) {
if (!uniqueRecord.contains(highNum)) {
ret++; uniqueRecord.add(highNum); } break; } } } return ret; }}

鸣谢

非常感谢你愿意花时间阅读本文章,本人水平有限,如果有什么说的不对的地方,请指正。

欢迎各位留言讨论,希望小伙伴们都能每天进步一点点。

转载地址:https://le-yi.blog.csdn.net/article/details/108892923 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:领扣LintCode算法问题答案-1188. BST的最小绝对差
下一篇:领扣LintCode算法问题答案-1181. 二叉树的直径

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年05月03日 01时06分04秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章