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)

运行结果:
在这里插入图片描述

你可能感兴趣的:(算法,python,python)