滚动数组带来的优化

程序中在涉及当前循环与前一循环对比的情况,有时需要我们用于两个变量来存储中间结果。

for i in range(n):
  # compare
  compare tempres(i) and tempres(i-1)
  # program logic
  tempres(i) = func(i)

这时为了节省空间消耗,最好只申请两个变量。每次循环将更早的中间结果剔除,换位最新结果。这部分代码可以采用如下落实实现。

for i in range(n)
  # compare
  x, y = i%2, (i-1)%2
  tempres[x] and tempres[y]
  # program logic

这样 tempres[0] 与 tempres[1] 轮流(滚动)作为前一循环中间结果的存储。不必,每次将前一循环的结果都放在 tempres[0]中,这样会对一次赋值的运算。

你可能感兴趣的:(滚动数组带来的优化)