关于哈希表:数组中的-kdiff-数对
一、题目形容: 题目内容 题目示例 题目解析 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次 因而,咱们的对题目中进行具体理解了,因为会排除反复的数对,咱们很容易想哈希表来构建 办法一:构建哈希表 数对中反复场景如示例一中差值为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 """ 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)复制代码 ...