有一个a
代表楼梯的数量。列表b
中的每个数字代表您可以从当前楼梯跳下的楼梯数量。您需要确定是否可以从第一个楼梯到达最后一个楼梯。
输入示例:
情况a)
8
1 3 0 0 2 0 1 1
情况b)
3
0 1 1
输出示例:
情况a)
True
情况b)
False
我设法创建了一个有效的代码,但超出了时间限制。所有数字都是正数,并且具有int类型。您能否给我一个想法,如何改进我的算法(如果可以这样命名的话)。
我的代码:
a = int(input())
b = list(map(int, input().split()))
flag = True
count = 0
for i in range(a):
if b[i] > 0:
if count != 0:
position = i - count - 1
if b[position] <= count:
flag = False
break
count = 0
elif b[i] == 0:
if i == 0:
flag = False
break
else:
count += 1
print(flag)
谢谢。