Python⽅法解决两数之和(适合初学者)
Python⽅法两数之和–两种⽅案
今天在写这个算法的时候,遇到了在pycham上⾯可以进⾏运⾏,但是在⼒扣上不能运⾏,搞了好久,不去想了,我所写的算法分析,⾮常适合刚刚⼊门的学习算法的同学,下⾯是两数之和的两种解法,⾸先看⼀下题:
给定⼀个整数数组 nums 和⼀个⽬标值 target,请你在该数组中出和为⽬标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输⼊只会对应⼀个答案。但是,数组中同⼀个元素不能使⽤两遍。
⽰例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
上⾯是给出这个题⼀些思想。让我先看看解法⼀,这个第⼀⽅法就是利⽤嵌套循环,也就是俩个for循环进⾏求解,下⾯⼀起来看看代码解析:
⽅法⼀
class Solution():
def towSum(self,list,targe):#定函数参数包括⼀个数组and⽬标数(整型)
n=len(list)#获取数组长度下标从零开始
for i in range(n):
for j in range(i+1,n):#循环遍历
if list[i]+list[j]==targe:#满⾜条件
return[i,j]#返回对应的下标
return[]#不存在返回空列表
s=Solution()#创建对象
num=[2,5,7,13]#创建数组
wSum(num,15)#创建对象进⾏函数的调⽤,输⼊参数
print(com)#打印结果
下⾯试运⾏结果
⽅法⼆
运⽤哈希表进⾏代码的编写,哈希表的创建利⽤python⾥⾯的字典进⾏创建,这种解法⼤⼤节约了时间复杂度,对于每⼀个 x,我们⾸先查询哈希表中是否存在 target - x,然后将 x 插⼊到哈希表中,即可保证不会让 x 和⾃⼰匹配。下⾯我看看代码解析:
class Solution():
def towSum(self,list,targe):
Hashtable=dict()#创建哈希表
for i,num in enumerate(list):#enumerate() 函数⽤于将⼀个可遍历的数据对象(如列表、元组或字符串)组合为⼀个索引序列,同时列出数据和数据下标,⼀般⽤在 for 循环当中。
if targe-num in Hashtable:
return[Hashtable[targe-num],i]
Hashtable[list[i]]=i#把列表的元素添加哈希表中
return[]
s=Solution()
num=[2,5,7,13]
wSum(num,15)
print(com)
python新手代码大全pdf运⾏结果:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论