leetcode和算法----日更

leetcode 532 数组中的K-diff数对

2020-02-12  本文已影响0人  Arsenal4ever

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

猜你喜欢

热点阅读