遍历整个数组,用字典dic存储已经出现过的数字,用集合ans去重存储所有满足条件的数值队对元组。

|nums[i]-nums[j]|=k,则nums[i]-nums[j]=k或nums[i]-nums[j]=-k。

遍历数组当前元素为x,寻找匹配为k的元素是不是出现过,匹配的元素有:x+k和x-k两个。

将符合条件的数值对存储成有序元组对,注意可变元素不能成为集合的元素。

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param nums int整型一维数组 
# @param k int整型 
# @return int整型
#
from collections import Counter
class Solution:
    def k_dis(self , nums: List[int], k: int) -> int:
        # write code here
        ans, dic = set(), Counter()
        for x in nums:
            if x-k in dic:
                ans.add(tuple(sorted([x,x-k])))
            if x+k in dic:
                ans.add(tuple(sorted([x,x+k])))
            dic[x] += 1
        return len(ans)