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]#创建数组 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)
运行结果: