0
点赞
收藏
分享

微信扫一扫

【蓝桥杯每日一练:我的世界】

问题描述

小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')
举报

相关推荐

0 条评论