【发布时间】:2014-03-14 13:53:37
【问题描述】:
我被要求编写一个函数,它可以找到给定数字和给定位数中的最大交替数字总和。例如,数字 81010 有 3 个长度为 3 - (8-1+0),(1-0+1),(0-1+0) 的交替和,我们应该返回答案 7。
对每个数字子序列求和很容易,但可能需要一段时间,并且算法应该足够快以处理非常大的数字。我不知道如何编写这样的函数,其运行速度比普通函数快...
我有一条线索,它说考虑如何通过给定前 n 位数字的总和,我们可以有效地找到序列中从第二位数字开始的数字总和。
请帮忙,谢谢。
PS 我确实看到了一些关于找到最大和的问题,但无法实现找到最大交替和的答案。
这是查找最大连续数字和的代码:
def max_sum(n,d):
number = list(map(int,str(n)))
maximum = current = sum(number[:d])
for i in range(0, len(number)-d):
current = current - number[i] + number[i+d]
if current > maximum:
maximum = current
return maximum
【问题讨论】:
-
发布您的代码,以便我们查看您是否效率低下。不要说“这是我的问题,请给我写快代码”
-
除了Cyber说的,关于“优化”的问题真的应该发到codereview.stackexchange.com
标签: python python-3.x