Skip to content

Instantly share code, notes, and snippets.

@kuntalchandra
Created October 3, 2020 09:15
Show Gist options
  • Save kuntalchandra/3f6317a2e29a5a26c58f9820f8c0d594 to your computer and use it in GitHub Desktop.
Save kuntalchandra/3f6317a2e29a5a26c58f9820f8c0d594 to your computer and use it in GitHub Desktop.
K-diff Pairs in an Array
"""
Given an array of integers nums and an integer k, return the number of
unique k-diff pairs in the array.
A k-diff pair is an integer pair (nums[i], nums[j]), where the following are
true:
0 <= i, j < nums.length
i != j
a <= b
b - a == k
Example 1:
Input: nums = [3,1,4,1,5], k = 2
Output: 2
Explanation: There are two 2-diff pairs in the array, (1, 3) and (3, 5).
Although we have two 1s in the input, we should only return the number of
unique pairs.
Example 2:
Input: nums = [1,2,3,4,5], k = 1
Output: 4
Explanation: There are four 1-diff pairs in the array, (1, 2), (2, 3), (3, 4)
and (4, 5).
Example 3:
Input: nums = [1,3,1,5,4], k = 0
Output: 1
Explanation: There is one 0-diff pair in the array, (1, 1).
Example 4:
Input: nums = [1,2,4,4,3,3,0,9,2,3], k = 3
Output: 2
Example 5:
Input: nums = [-1,-2,-3], k = 1
Output: 2
"""
from typing import List
class Solution:
def findPairs(self, nums: List[int], k: int) -> int:
if not nums:
return 0
nums.sort()
left, right, n, res = 0, 1, len(nums), 0
while left < n and right < n:
if left == right or nums[right] - nums[left] < k:
right += 1
elif nums[right] - nums[left] > k:
left += 1
else:
left += 1
res += 1
while left < n and nums[left] == nums[left - 1]:
left += 1
return res
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment