在Python中编写一个计算走过k次的块数的程序
假设我们有两个名为walks
和target
的列表。一开始,我们在一维线条的位置0上。 | walks [i] |
表示已经走的步数。 当walk [i]
为正数时,表示向右走,为负数时表示向左走。当我们走路时,我们移动一个块,即下一个或前一个整数位置。我们必须找出被走过至少target
次的块的数量。
因此,如果输入如下:walks = [3,-7,2]
target = 2
,则输出将是5。从下面的图中,我们可以看到[0,1]
,[1,2]
,[2,3]
,[-4,-3]
,[-3,-2]
均被走过了2次。
为了解决这个问题,我们将采取以下步骤-
- pos:= 0
- jumps:=哈希图中的默认值为0
- 对于走过的每个距离,执行以下操作:
- 如果距离“> 0”,则 jumps [pos]:= jumps [pos] +1,否则始终减去1
- 如果距离“> 0”,则 jumps [pos + dist]:= jumps [pos + dist] -1,否则始终减去1
- pos:= pos + dist
- lastpos:= 0
- level:= 0
- total:= 0
- 对于跳跃的排序的键值对中的每个位置pos和值val,执行以下操作:
- 如果级别≥目标,则
- total:=total + pos-lastpos
- 级别:=level + val
- lastpos:= pos
- 如果级别≥目标,则
- 返回总数
示例
请参阅以下实现,以获得更好的理解−