当前位置: 代码迷 >> 综合 >> 面试题 16.24. 数对和
  详细解决方案

面试题 16.24. 数对和

热度:74   发布时间:2024-02-01 02:57:30.0

设计一个算法,找出数组中两数之和为指定值的所有整数对。一个数只能属于一个数对。

示例 1:

输入: nums = [5,6,5], target = 11
输出: [[5,6]]

1.hash

2.排序+双指针(本质是找2个数等于target)

class Solution:def pairSums(self, nums: List[int], target: int) -> List[List[int]]:res=[]hash=collections.defaultdict(int)for num in nums:hash[num]+=1for num in nums:if hash[num]<=0:continuetmp=target-numif num==tmp:if hash[num]<2:continueif  tmp in  hash and hash[tmp]>=1:res.append([num,tmp])hash[tmp]-=1hash[num]-=1return resclass Solution:def pairSums(self, nums: List[int], target: int) -> List[List[int]]:nums=sorted(nums)left,right=0,len(nums)-1res=[]while left<right:now_sum=nums[left]+nums[right]if now_sum==target:res.append([nums[left],nums[right]])left+=1right-=1elif now_sum<target:left+=1else:right-=1return res

 

  相关解决方案