【发布时间】:2017-01-04 23:14:36
【问题描述】:
我需要让我的程序更快,但我就是不知道怎么做。这是问题所在。我有一个这样排序的数字序列:
7
4 8
2 5 9
1 3 6 10
7
\
4 8
\ \
2 5 9
\ \ \
1 3 6 10
我必须根据输入输出一个数字。输入将是两个整数,将它们视为 x 和 y 坐标。 x 是我从左边走多少,而 y 是我从底部走多少。所以说 x 和 y 是 1 和 1,那么我必须输出 5。
7
4 8
2-5 9
|
1 3 6 10
现在我的代码可以运行并获得正确的数字,但它太慢了。
def answer(x, y):
last_num = 1
arr_hold = [[1]]
for i in range(2, x+(y+2)):
reg_hold = []
for j in range(last_num + 1, i + last_num + 1):
if j == (i + last_num + 1) - 1:
last_num = j
if i == (x+(y+2)) - 1:
reg_hold.append(j)
print reg_hold
return reg_hold[x]
有什么办法可以加快速度吗? x 或 y 最大可以是 100000,最小可以是 0
【问题讨论】:
-
@UrielEli 你是什么意思?我告诉过你x是向右移动多少次,y是向上移动多少次。
-
分析模式。数字与其坐标之间显然存在关系。如果你能弄清楚它是什么,就不需要循环了。
-
如果你的代码没有错误,一个更好的提问地方可能是Code Review。
标签: python algorithm performance math