1、两数之和
1、遍历
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
n = len(nums)
for i in range(n):
for j in range(i+1,n):
if target == nums[i] + nums[j]:
return [i,j]
2、哈希表
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
hash = dict()
for i,num in enumerate(nums):
if target-num in hash:
return [hash[target-num],i]
hash[nums[i]] = i
return
454、四数之和
1、哈希表
countAB = [’-1’:1,‘0’:3]
class Solution:
def fourSumCount(self, nums1: List[int], nums2: List[int], nums3: List[int], nums4: List[int]) -> int:
countAB = collections.Counter(u + v for u in nums1 for v in nums2)
ans = 0
for i in nums3:
for j in nums4:
if -(i+j) in countAB:
ans += countAB[-(i+j)]
return ans
560、和为 K 的子数组
class Solution(object):
def subarraySum(self, nums, k):
"""
:type nums: List[int]
:type k: int
:rtype: int
"""
fixSum = 0
count = 0
self.dict = dict()
self.dict[0] = 1
for num in nums:
fixSum += num
if fixSum-k in self.dict:
count += self.dict[fixSum-k]
if fixSum in self.dict:
self.dict[fixSum] += 1
else:
self.dict[fixSum] = 1
return count