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]#创建数组
com=s.towSum(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]
com=s.towSum(num,15)
print(com)
运行结果:
原文链接:https://blog.csdn.net/weixin_46347928/article/details/108919636