程序计算通过在 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 defaultdictdef 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