题小难搞,最先想到的是用 hashMap缓存,可是数据结构设计不好。
后来发现可用双 set 代替 hashmap!!!,只需要往集合中保留键值对中大的数字,好像还不错的样子、、、
class Solution(object):
def findPairs(self, nums, k):
"""
:type nums: List[int]
:type k: int
:rtype: int
"""
nums.sort()
numsSet = set()
existNumsSet = set()
for num in nums:
if num - k in numsSet:
existNumsSet.add(num)
numsSet.add(num)
return len(existNumsSet)
PS:也可不排序!!!绝对值那块就要判断两次了。
第二种也可将结果集合改成 hashMap,可能会好理解一些
class Solution(object):
def findPairs(self, nums, k):
"""
:type nums: List[int]
:type k: int
:rtype: int
"""
if k < 0:
return 0
numsSet = set()
answers = {}
for num in nums:
if num - k in numsSet:
answers[num-k] = num
if num + k in numsSet:
answers[num] = num + k
numsSet.add(num)
return len(answers)
网友评论