【LeetCode】数组中的 k-diff 数对 Java 题解
题目描述
给你一个整数数组 nums 和一个整数 k,请你在数组中找出 不同的 k-diff 数对,并返回不同的 k-diff 数对 的数目。
k-diff 数对定义为一个整数对 (nums[i], nums[j]) ,并满足下述全部条件:
0 <= i, j < nums.lengthi != j
|nums[i] - nums[j]| == k 注意,|val| 表示 val 的绝对值。
复制代码
思路分析
今天的算法题目是数组题目,题目自定义了 k-diff 数对,需要满足 0 <= i, j < nums.lengthi != j,|nums[i] - nums[j]| == k。
根据上述条件,我们无须对数组排序。在求 k-diff 数组的过程中,|nums[i] - nums[j]| == k 转换成两数之和的题目,求解思路类似,为了避免重复,我们使用 hashSet 记录访问过的元素。实现代码如下,供参考。
通过代码
复制代码
总结
上述算法的时间复杂度是 O(n),空间复杂度是 O(n)
坚持算法每日一题,加油!
版权声明: 本文为 InfoQ 作者【HQ数字卡】的原创文章。
原文链接:【http://xie.infoq.cn/article/536b498666106230d95898534】。文章转载请联系作者。
评论