注:
本系列文章仅是作者自己学习过程中记录的笔记,是初学python用于算法求解的过程,会含有很多对于python的个人注解,用于学习。求职中解算法,我打算使用Python来进行解答,不知是否可不可以,希望能得到大佬的建议,轻喷。
目录
题目:
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
暴力解法:
直接双重循环穷举数组来计算出target,记录出正确下标进行输出。
时间复杂度:O(N^2)
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
result =[]
for i in range(0,len(nums)):
for j in range(i+1,len(nums)):
sum=nums[i]+nums[j]
if sum==target:
result.append(i)
result.append(j)
return result
return result
#class关键字定义了一个名叫solution的类
#def用来定义函数或类中的方法
#参数self:代表类的实例对象,这样写可以在外部直接调用xxx.twoSum
#nums:List[int],-----nums是参数名,List[int]是类型注解:表示是一个整形的列表
#->List[int]指的是整个函数的返回类型是一个整形列表,是一种类型注解
#range()左闭右开
#result=[]表示新建一个空列表
#列表名.append(i):指的是在列表的末尾上新加上元素i
#注意缩进:类,方法,循环,If
#冒号:表示开启一段代码块(类/函数,方法/循环/IF)
哈希表法:
用target来减去列表元素i,寻找是否有(9-i)【diff】存在。
时间复杂度:O(N)
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
result=[]
mapping={}
for i in range(0,len(nums)):
mapping[nums[i]]=i
for j in range(0,len(nums)):
diff=target-nums[j]
if(diff in mapping and mapping [diff]!=j):
result.append(j)
result.append(mapping[diff])
return result
#class关键字定义了一个名叫solution的类
#Q:为什么使用哈希表呢?
#A:使用哈希表(字典)(键值对)的方式,去寻找key和value的时间是O(1)而不是O(N)
#此题由题意可知:将列表元素值作为key,列表索引充当value----mapping[nums[i]]=i
#mapping={}:创建空字典
#diff in mapping and mapping [diff]!=j:判断diff是否在字典中,同时避免在字典中找成同一元素了
8万+

被折叠的 条评论
为什么被折叠?



