classSolution(object):deftwoSum(self, nums, target):
d ={}for i inrange(len(nums)):
diff = target - nums[i]if diff in d:return[i, d[diff]]
d[nums[i]]= i
return[-1,-1]
classSolution(object):defthreeSum(self, nums):
nums.sort()
res =[]for i inrange(len(nums)):if i >0and nums[i]== nums[i-1]:continue
m, n = i+1,len(nums)-1while m <n:
cur_sum = nums[i]+ nums[m]+ nums[n]if cur_sum >0:
n -=1elif cur_sum<0:
m +=1else:
res.append([nums[i], nums[m], nums[n]])
m +=1
n -=1while m<n and nums[n]== nums[n+1]:
n -=1while m<n and nums[m-1]== nums[m]:
m +=1return res
classSolution(object):defthreeSumClosest(self, nums, target):
nums.sort()
res =-1000000
res = nums[0]+ nums[1]+ nums[2]for i inrange(len(nums)):
j, k = i+1,len(nums)-1while j<k:
cur_sum = nums[i]+ nums[j]+ nums[k]ifabs(cur_sum-target)<abs(res - target):
res = cur_sum
if cur_sum == target:return target
if cur_sum> target:
k = k-1else:
j = j+1return res
from collections import Counter
classSolution(object):deffourSumCount(self, nums1, nums2, nums3, nums4):
res =0
addCount = Counter(u+v for u in nums3 for v in nums4)for a in nums1:for b in nums2:
res += addCount[-a-b]return res
classSolution(object):deffourSum(self, nums, target):"""
:type nums: List[int]
:type target: int
:rtype: List[List[int]]
"""
nums.sort()
res =[]for i inrange(len(nums)):if i>0and nums[i-1]== nums[i]:continuefor j inrange(i+1,len(nums)):if j>i+1and nums[j-1]== nums[j]:continue
m, n = j+1,len(nums)-1while m < n:
cur_sum = nums[i]+ nums[j]+ nums[m]+ nums[n]if cur_sum > target:
n -=1elif cur_sum < target:
m +=1else:
res.append([nums[i],nums[j],nums[m],nums[n]])
m +=1
n -=1while m<n and nums[n]== nums[n+1]:
n -=1while m<n and nums[m]== nums[m-1]:
m +=1return res
1. 两数之和class Solution(object): def twoSum(self, nums, target): d = {} for i in range(len(nums)): diff = target - nums[i] if diff in d: return [i, d[diff]] d[nums[i]] = i