LeetCode 2006. Count Number of Pairs With Absolute Difference K Solution in Java, C++, Python & More | Explanation + Code

CoderIndeed
0
2006. Count Number of Pairs With Absolute Difference K

Description

Given an integer array nums and an integer k, return the number of pairs (i, j) where i < j such that |nums[i] - nums[j]| == k.

The value of |x| is defined as:

  • x if x >= 0.
  • -x if x < 0.

 

Example 1:

Input: nums = [1,2,2,1], k = 1
Output: 4
Explanation: The pairs with an absolute difference of 1 are:
- [1,2,2,1]
- [1,2,2,1]
- [1,2,2,1]
- [1,2,2,1]

Example 2:

Input: nums = [1,3], k = 3
Output: 0
Explanation: There are no pairs with an absolute difference of 3.

Example 3:

Input: nums = [3,2,1,5,4], k = 2
Output: 3
Explanation: The pairs with an absolute difference of 2 are:
- [3,2,1,5,4]
- [3,2,1,5,4]
- [3,2,1,5,4]

 

Constraints:

  • 1 <= nums.length <= 200
  • 1 <= nums[i] <= 100
  • 1 <= k <= 99

Solutions

Solution 1: Brute Force Enumeration

We notice that the length of the array nums does not exceed 200, so we can enumerate all pairs (i, j), where i < j, and check if |nums[i] - nums[j]| equals k. If it does, we increment the answer by one.

Finally, we return the answer.

The time complexity is O(n2), and the space complexity is O(1). Here, n is the length of the array nums.

PythonJavaC++GoTypeScriptRust
class Solution: def countKDifference(self, nums: List[int], k: int) -> int: n = len(nums) return sum( abs(nums[i] - nums[j]) == k for i in range(n) for j in range(i + 1, n) )(code-box)

Solution 2: Hash Table or Array

We can use a hash table or array to record the occurrence count of each number in the array nums. Then, we enumerate each number x in the array nums, and check if x + k and x - k are in the array nums. If they are, we increment the answer by the sum of the occurrence counts of x + k and x - k.

Finally, we return the answer.

The time complexity is O(n), and the space complexity is O(n). Here, n is the length of the array nums.

PythonJavaC++GoRust
class Solution: def countKDifference(self, nums: List[int], k: int) -> int: ans = 0 cnt = Counter() for num in nums: ans += cnt[num - k] + cnt[num + k] cnt[num] += 1 return ans(code-box)

Post a Comment

0Comments

Post a Comment (0)

#buttons=(Accept !) #days=(20)

Our website uses cookies to enhance your experience. Check Now
Accept !