Created
October 3, 2020 09:15
-
-
Save kuntalchandra/3f6317a2e29a5a26c58f9820f8c0d594 to your computer and use it in GitHub Desktop.
K-diff Pairs in an Array
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
""" | |
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