-
暴力法
暴力法时间复杂度O(n^2)class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:for i in range(len(nums)): for j in range(i,len(nums)):#一开始超时,因为没有从i开始 if nums[i]+nums[j]==target and i!=j: return [i,j] return None
-
二遍哈希表
python里的字典可以对应哈希表,哈希表查找元素的时候时间复杂度可以被认为是O(1)。
可以用两个数组L1,L2
d={}
d=dict(zip(L1,L2))
去生成字典
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:L1=[] for i in range(len(nums)): L1.append(i) d=dict(zip(nums,L1))#先弄出一个递增数列,然后和原数组合成数组 for i in range(len(nums)): if target-nums[i] in d and i!=d[target-nums[i]]: return [i,d[target-nums[i]]]
-
一遍哈希表
在添加哈希表(字典)过程中判断,更加减少运行时间。
使用
d[nums[i]]=i
可以利用循环来添加字典
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:d={} for i in range(len(nums)): complement =target-nums[i] if complement in d: return [d[complement],i] d[nums[i]]=i #这里可以看出其实可以以这种方式添加字典 return None
用力扣学python 1. 两数之和
最新推荐文章于 2023-10-18 17:53:09 发布