程序计算通过在 Python 中行走 k 次覆盖了多少块

假设我们有两个名为 walks 和 target 的列表。一开始,我们在一维线上的位置 0 处。现在|走[i]| 代表已经走过的步数。当 walk[i] 为正时,则表示向右行走,而负向则表示向左行走。当我们走路时,我们移动一个块,即下一个或前一个整数位置。我们必须找到至少经过目标次数的块数。

所以,如果输入像walks = [3, -7, 2] target = 2,那么输出就是5,从下图中我们可以看到[0, 1], [1, 2], [2 , 3], [-4, -3], [-3, -2] 被覆盖 k = 2 次。

示例

让我们看看以下实现以更好地理解 -

from collections import defaultdict

def solve(walks, target):

   pos = 0

   jumps = defaultdict(int)

   for dist in walks:

      jumps[pos] += 1 if dist > 0 else -1

      jumps[pos + dist] -= 1 if dist > 0 else -1

      pos += dist

   lastpos = level = total = 0

   for pos, val in sorted(jumps.items()):

      if level >= target:

         total += pos - lastpos

      level += val

      lastpos = pos

   return total

walks = [3, -7, 2]

target = 2

print(solve(walks, target))

输入

[3, -7, 2], 2
输出结果
5

以上是 程序计算通过在 Python 中行走 k 次覆盖了多少块 的全部内容, 来源链接: utcz.com/z/363254.html

回到顶部