Python解决算法问题,一种只要10多秒,另一种要10分钟?为什么?

问题引发

发问题者:为什么别人Python写的算法解题只要10多秒,我的要10分钟?

Dive into Python 第八章的例子

解决一个问题:
HAWAII + IDAHO + IOWA + OHIO == STATES
510199 + 98153 + 9301 + 3593 == 621246

H = 5,A = 1,W = 0,I = 9,D = 8,O = 3,S = 6,T = 2,E = 4

嗨喽:正在学习python的小伙伴或者打算学习的,可以私信小编“01”领取资料!

书中的算法:

Python解决算法问题,一种只要10多秒,另一种要10分钟?为什么?

我写的算法:

Python解决算法问题,一种只要10多秒,另一种要10分钟?为什么?

10 分钟是在 Node.js 8.3 中进行的测试;Chrome 要 15 分钟。

这究竟是算法的差异,还是语言的差异?我的电脑 CPU 是 E3 1230 v5 (3.4GHz)。

问题解答:

算法有问题

计算排列的方式太低效,在1e9当中不重复的数字只有3.63e6个。所以白瞎计算了几百倍。光那么多数字都toString一下就要几分钟了。托JS的福,10分钟算快的了。

正常来说,js比python快10倍以上,不过在这个例子里,因为python用了itertools这种牛逼库,所以只比js慢1、2倍。也就是说,js应该5秒就算好了。

Python解决算法问题,一种只要10多秒,另一种要10分钟?为什么?

【补充:这个题目其实还包含了一些额外条件(比如S = H + 1)可以大幅度降低计算量,基本上应该100毫秒之内。】

如果是你,你会做出如何解释?

最后多说一句,小编是一名python开发工程师,这里有我自己整理了一套最新的python系统学习教程,包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。想要这些资料的可以关注小编,并在后台私信小编:“01”即可领取

相关推荐