问题描述
小T在我的世界中建立了N根柱子,其中第i根柱子由H i 个方块组成。
对一次操作的定义是:去掉某根柱子的一个方块。
小T对一根柱子最多进行一次操作,问能否找到一种方法,使得N NN根柱子从左到右含有的方块数量非递减。
例如本来有5根柱子,高度分别是1、2、1、1、3
可以选择对第二根柱子进行一次操作(减少第二根柱子中的一个方块)
之后所有柱子所包含的方块数为1、1、1、1、3,非递减。
输入格式
输入包括2行:
第一行是1个整数N,代表我的世界中共有N根柱子。
第二行是N个空格隔开的正整数H i,代表从左到右每根柱子所包含的方块数。
数据范围:
- 1 ≤ N ≤ 10^5
- 1 ≤ H i ≤ 10^9
输出格式
能否找到一种方法,在对一根柱子顶多操作一次的前提下,使得这N根柱子所包含的方块数量非递减。
如果可以,输出Yes
,否则输出No
输入样例
4
1 3 2 1
输出样例
No
【提示】
降低计算时间就是减少遍历复杂度,尽量只遍历一次。
代码
N=int(input())
A=list(map(int,input().split()))
x=A[0]-1
y=0
for i in range(1,N):
if A[i]>x:
x=A[i]-1
elif A[i]==x:
x=x
else:
y=1
print('No')
break
if y!=1:
print('Yes')