python计算两数之和class_Python经典算法 - 1.两数之和

给定一个整数数列,找出其中两个元素,其和为某个特定值。

可以假设每个输入都只会有一种答案,这个数列内的元素不重复。

示例:给定 number = [3, 9, 6, 12], target = 9因为 nums[0] + nums[2] = 6 + 6 = 9所以返回这两个数的索引 [0,2]

请参考下列代码,补全以下代码,同时请考虑代码的运行效率,要求代码运行限制在3-5秒内运行完成,这才是难点。请先思考,最下面会提供两种方法。

下面看两种解法,以及看这两种解法的效率。

解法1:先看很多人给的第一种解法

这种解法,是用for循环,先将第一个元素与后面的元素逐个相加,再将第二个元素与后面的元素逐个相加,以此类推,直到找到符合条件的元素。这种解法直观上好理解,但是因为要一个个遍历,因此效率很慢,上述执行结果需要10.6s。

在工作上,可能会遇到数据量更大的情况,显然,这种做法是不可取的。下面看第二种解法。

解法2:稍微高级点的解法

上述解法得到的结果与之前相同,但是执行时间只有1.6s!这种解法,首先是将列表使用enumerate()方法将其组合为索引序列,我们不是去找哪两个数的和等于目标值,而是去找针对每个值,目标值与这个值的差值是否在这个列表内。

一定还有更好的算法,也期待你有更好的算法,如果有,欢迎将代码文件发送至邮箱cunxi1993@gmail.com。我一定会把好的代码贴出来,署上你的大名,让大家一起共同学习。

4. 写在最后

为了方便系统性的学习知识和参与项目实战,希望大家关注文章下方的广告区推广的号,是我自己运营的,头条上面很多想做的事情受到了极大的限制,知识内容无法形成结构性,也不方便交流,很多的互动和活动都在那个号上,欢迎加入,感谢支持~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值