【发布时间】:2010-08-07 01:20:20
【问题描述】:
我有一个整数列表,即:
values = [55, 55, 56, 57, 57, 57, 57, 62, 63, 64, 79, 80]
我试图找出两个连续数字之间的最大差异。
在这种情况下,它将是来自64->79 的15。
数字可以是负数或正数、增加或减少或两者兼而有之。重要的是我需要找到两个连续数字之间的最大增量。
最快的方法是什么?这些列表可以包含数百到数千个整数。
这是我现在的代码:
prev_value = values[0]
largest_delta = 0
for value in values:
delta = value - prev_value
if delta > largest_delta:
largest_delta = delta
prev_value = value
return largest_delta
有没有更快的方法来做到这一点?这需要一段时间。
【问题讨论】:
-
如果增量都是负数,您的代码将失败;它返回零。
-
不要忘记,如果它是一个真正庞大的列表,您也可以“扩展”——也就是说,让多个线程跨不同的块工作,这样您就可以使用机器上的所有内核。