Solving Leetcode Interviews in Seconds with AI: Count Number of Pairs With Absolute Difference K
Introduction
In this blog post, we will explore how to solve the LeetCode problem "2006" using AI. LeetCode is a popular platform for preparing for coding interviews, and with the help of AI tools like Chatmagic, we can generate solutions quickly and efficiently - helping you pass the interviews and get the job offer without having to study for months.
Problem Statement
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
Explanation
- The core idea is to iterate through the array and, for each element
nums[i], count the number of elementsnums[j](wherej > i) such that the absolute difference betweennums[i]andnums[j]is equal tok.- To optimize this, we can use a hash map (or in this case, since the constraints limit values from 1-100, a simple array/list) to store the frequency of each number encountered so far. This lets us quickly check how many numbers exist such that
nums[j] = nums[i] + kornums[j] = nums[i] - k. - Iterate through the array. For each element, instead of comparing to the rest of the array, we will use the frequency array to determine the number of valid pairs.
- To optimize this, we can use a hash map (or in this case, since the constraints limit values from 1-100, a simple array/list) to store the frequency of each number encountered so far. This lets us quickly check how many numbers exist such that
- Runtime Complexity: O(n), where n is the length of the input array
nums. Storage Complexity: O(1), because the frequency array's size is bounded by the constant range of possible values (1-100 inclusive).
Code
def countKDifference(nums: list[int], k: int) -> int:
"""
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.
"""
count = 0
freq = [0] * 101 # Initialize frequency array for numbers from 1 to 100
for num in nums:
count += (freq[num + k] if num + k <= 100 else 0) + (freq[num - k] if num - k >= 1 else 0)
freq[num] += 1
return count