遍历整个数组,用字典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)



京公网安备 11010502036488号