AcWing 1210. 连号区间数 -- Python
原题链接
简单
作者:
Duckcc
,
2021-04-04 18:55:56
,
所有人可见
,
阅读 628
基于枚举 + 优化判定
枚举出所有子区间,切片后进行 check() 判定
基本思想
首先,数列顺序排列后,如果是连续排列
那么 **(最后面的数 减去 最前面的数) 应该等于 数列的长度**
而 数列的max肯定是最后 min是最前
所以 只需要确定数列中最大的数和最小的数
每次判定的时候,更改 max 和 min 进行判定就行
Python3 代码
n = int(input())
line = list(map(int, input().split()))
s = 0
def check(cc,k): # k记录列表长度
global s,max,min
if cc > max:
max = cc
if cc < min:
min = cc
if max-min == k:
s += 1
return 0
for i in range(n):
max = line[i]
min = line[i]
for j in range(i+1,n):
check(line[j],j-i) # 判定的是line[i:j+1]切片
print(s+n) # 单个的省略了
80分啊姐妹
妙啊