美文网首页leetcode和算法----日更
leetcode 532 数组中的K-diff数对

leetcode 532 数组中的K-diff数对

作者: Arsenal4ever | 来源:发表于2020-02-12 23:29 被阅读0次

题小难搞,最先想到的是用 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)

相关文章

网友评论

    本文标题:leetcode 532 数组中的K-diff数对

    本文链接:https://www.haomeiwen.com/subject/ihphfhtx.html