您现在的位置是:网站首页> 编程资料编程资料
python数组中的 k-diff 数对例题解析_python_
2023-05-26
373人已围观
简介 python数组中的 k-diff 数对例题解析_python_
一、题目描述
题目内容:

题目示例:

题目解析:
1 <= nums.length <= 104-107 <= nums[i] <= 1070 <= k <= 107
二、思路分析
我们拿到本题,读取题意要求在一组整数数组中,求出差值为k的数对对数k-diff。在思考如何解答该题之前,需要明确如下几点细节:
- nums数组元素都是整数
- 索引位置i与位置j,不能相等
- k-diff数对关系:nums[i] - nums[j] = k -> nums[i] = nums[j] + k -〉 nums[i] - k = nums[j]
- k-diff数对,存在相同数对情况,但结果只取1次
因此,我们的对题目中进行详细了解了,因为会排除重复的数对,我们很容易想哈希表来构建
方法一:构建哈希表
根据上述思路,我们使用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)
- 数对中重复场景如示例一中差值为k=1,(1,3) & (3,1)视为一种情况,则要定义两个哈希表来储存
- 哈希表可以通过字典k-value或者集合set(),本题无需考虑索引关系定义ans,numset两个集合
- 当 nums[i] > nums[j],则nums[j] = nums[i] - k在numset中,取最小的那一个则ans.add(nums[i]-k),
- 当 nuns[i] < nums[j],则nums[j] = nums[i] + k 在numset中,取较小的那一个则ans.add(nums[i])
方法二:双指针

根据上述思路,使用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
- 首先对nums数组中的元素按照从低到高的顺序排列
- 在递增的数组中,由于双指针 i!=j,因此i指针一定是小于j的
- 枚举查找的判断的条件 nums[j] < nums[i]+k,指针j则往后移动
- 当nums[j] = nums[i] + k 时,则对数次数+1
三、总结
本题可以使用哈希方法要使用两个哈希表,属于牺牲空间换取效率。双指针方法,虽然没有用额外的空间,但是速度较于方法一慢一点。
我们用第一种方法,AC提交记录如下:

- 时间复杂度O(n),n为nums长度
- 空间复杂度O(n),需要使用哈希表,n为nums长度
到此这篇关于python数组中的 k-diff 数对例题解析的文章就介绍到这了,更多相关python k-diff 内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
您可能感兴趣的文章:
相关内容
- pandas数据清洗实现删除的项目实践_python_
- pandas.DataFrame.from_dict直接从字典构建DataFrame的方法_python_
- pandas函数isnull的具体使用_python_
- 浅谈pandas关于查看库或依赖库版本的API原理_python_
- Python实现校园网自动登录的脚本分享_python_
- 浅析python中的set类型_python_
- pandas温差查询案例的实现_python_
- 基于Python实现本地音乐播放器的制作_python_
- Python读取CSV文件并进行数据可视化绘图_python_
- Python通过psd-tools解析PSD文件_python_
