532. K-diff Pairs in an Array

结果要unique,那就用set来记录。brute-force的方法是直接遍历组合,但这题可以利用一下unique的要求,把遍历变成搜索,对每个元素,搜索它右边的sublist里面有没有比它大k的元素,有的话就算一个解,不需要关心有多少个 。同样,比它小k的也是。

class Solution:
    def findPairs(self, nums: List[int], k: int) -> int:
        res = set()
        if k < 0: return 0
        for i in range(len(nums)):
            if nums[i]+k in nums[i+1:]:
                res.add((nums[i], nums[i]+k))
            if nums[i]+k != nums[i]-k and nums[i]-k in nums[i+1:]:
                res.add((nums[i]-k, nums[i]))
        return len(res)

Last updated

Was this helpful?