python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > python k-diff

python数组中的 k-diff 数对例题解析

作者:​ 盆友圈的小可爱   ​

这篇文章主要介绍了python数组中的 k-diff 数对例题解析,文章根据题目内容对其进行分析以此展开主题内容,感兴趣的小伙伴可以参考一下下面文章详情

一、题目描述

题目内容:

题目示例:

题目解析:

二、思路分析

我们拿到本题,读取题意要求在一组整数数组中,求出差值为k的数对对数k-diff。在思考如何解答该题之前,需要明确如下几点细节:

因此,我们的对题目中进行详细了解了,因为会排除重复的数对,我们很容易想哈希表来构建

方法一:构建哈希表

根据上述思路,我们使用python代码能快速实现,代码如下:

class Solution(object):
    def findPairs(self, nums, k):
        """
        :type nums: List[int]
        :type k: int
        :rtype: int
        """
        ans = set()
        numset = set()
        for num in nums:
            if num - k in numset:
                ans.add(num-k)
            if num + k in numset:
                ans.add(num)
            numset.add(num)
        return len(ans)

方法二:双指针

image.png

根据上述思路,使用python代码实现,代码如下:

class Solution(object):
    def findPairs(self, nums, k):
        """
        :type nums: List[int]
        :type k: int
        :rtype: int
        """
        nums.sort()
        ans = 0
        j = 0
        for i in range(len(nums)):
            if i == 0 or nums[i] != nums[i-1]:
                while j < len(nums) and (nums[j] < nums[i] + k or j <= i):
                    j +=1
                if j < len(nums) and nums[j] == nums[i] + k:
                    ans +=1
        return ans

三、总结

本题可以使用哈希方法要使用两个哈希表,属于牺牲空间换取效率。双指针方法,虽然没有用额外的空间,但是速度较于方法一慢一点。

我们用第一种方法,AC提交记录如下:

到此这篇关于python数组中的 k-diff 数对例题解析的文章就介绍到这了,更多相关python k-diff 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文