• Time:O(n)
• Space:O(n)

## C++

``````class Solution {
public:
int findPairs(vector<int>& nums, int k) {
int ans = 0;
unordered_map<int, int> numToIndex;

for (int i = 0; i < nums.size(); ++i)
numToIndex[nums[i]] = i;

for (int i = 0; i < nums.size(); ++i) {
const int target = nums[i] + k;
if (numToIndex.count(target) && numToIndex[target] != i) {
++ans;
numToIndex.erase(target);
}
}

return ans;
}
};
``````

## JAVA

``````class Solution {
public int findPairs(int[] nums, int k) {
int ans = 0;
Map<Integer, Integer> numToIndex = new HashMap<>();

for (int i = 0; i < nums.length; ++i)
numToIndex.put(nums[i], i);

for (int i = 0; i < nums.length; ++i) {
final int target = nums[i] + k;
if (numToIndex.containsKey(target) && numToIndex.get(target) != i) {
++ans;
numToIndex.remove(target);
}
}

return ans;
}
}
``````

## Python

``````class Solution:
def findPairs(self, nums: List[int], k: int) -> int:
ans = 0
numToIndex = {num: i for i, num in enumerate(nums)}

for i, num in enumerate(nums):
target = num + k
if target in numToIndex and numToIndex[target] != i:
ans += 1
del numToIndex[target]

return ans
``````