刷 leetecode 的时候发现同样一段代码,用 Python 通过了,用 py3 就超时,这段代码有什么问题吗?
rt 附上代码,求大神解答。
class Solution:
# @return a list of lists of length 3, [[val1,val2,val3]]
def threeSum(self, num):
num.sort()
res = []
for i in range(len(num)-2):
if i == 0 or num[i] > num[i-1]:
left = i + 1
right = len(num) - 1
while left < right:
if num[left] + num[right] == -num[i]:
res.append([num[i], num[left], num[right]])
left += 1
right -= 1
while left < right and num[left] == num[left-1]:
left += 1
while left < right and num[right] == num[right+1]:
right -= 1
elif num[left] + num[right] < -num[i]:
while left < right:
left += 1
if num[left] > num[left-1]:
break
else:
while left < right:
right -= 1
if num[right] < num[right+1]:
break
return res ----------------------- 以下是精选回复-----------------------
答:按代码格式贴吧
答:感觉是 range 函数的问题吧,2.7 中 range 函数是先在内存中生成整个列表再遍历的,缺点是占内存,但是效率高,在 3 中 range 函数是一个生成器,内存占用小,但是效率低一点
楼主可以在 2.7 版本中将 range 改成 xrang 试试会不会超时,如果超时基本可以确定是这个问题了
答:Python3.6 版本性能才赶得上 Python2.7,估计是 Python3 版本问题
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 刷 leetecode 的时候发现同样一段代码,用 Python 通过了,用 py3 就超时,这段代码有什么问题吗?
网站模板库 » 刷 leetecode 的时候发现同样一段代码,用 Python 通过了,用 py3 就超时,这段代码有什么问题吗?
0条评论