美文网首页
LeetCode:532. 数组中的 k-diff 数对

LeetCode:532. 数组中的 k-diff 数对

作者: alex很累 | 来源:发表于2022-06-16 10:08 被阅读0次

问题链接

532. 数组中的 k-diff 数对

问题描述

给定一个整数数组和一个整数 k,你需要在数组里找到 不同的 k-diff 数对,并返回不同的 k-diff 数对 的数目。

这里将k-diff数对定义为一个整数对(nums[i], nums[j]),并满足下述全部条件:

  • 0 <= i < j < nums.length
  • |nums[i] - nums[j]| == k
  • 注意,|val| 表示 val 的绝对值。

示例

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

解题思路

这题很简单,排序后两重循环直接冲就行了,但要注意的是:
找到不同的数对,这并不意味着我们能直接去重,万一k=0,需要2个相同的数组成数对。

代码示例(JAVA)

class Solution {
    public int findPairs(int[] nums, int k) {
        Arrays.sort(nums);

        int lastI = Integer.MIN_VALUE;
        int count = 0;
        for (int i = 0; i < nums.length - 1; i++) {
            if (nums[i] == lastI) {
                continue;
            }
            for (int j = i + 1; j < nums.length; j++) {
                if (nums[j] - nums[i] == k) {
                    count++;
                    lastI = nums[i];
                    break;
                } else if (nums[j] - nums[i] > k) {
                    break;
                }
            }
        }

        return count;
    }
}

执行结果

相关文章

网友评论

      本文标题:LeetCode:532. 数组中的 k-diff 数对

      本文链接:https://www.haomeiwen.com/subject/qyafvrtx.html