感觉题目有点歧义,子数组可以不连续,所以有重复数据也可以去重排序后计算
1、731 ms 4088K
def check(l):
return len(l) == (l[-1] - l[0] + 1)
while True:
try:
n = int(input())
l = list(map(int, input().split()))
l = sorted(list(set(l)))
maxL = 1
n = len(l)
for i in range(n-1):
for j in range(i+1, n):
if check(l[i:j+1]):
maxL = max(maxL, j-i+1)
else:
break
print(maxL)
except EOFError:
break2、214 ms 3940K
while True:
try:
n = int(input())
l = list(map(int, input().split()))
l.sort()
maxL = 1
if n == 2 and l[1]-l[0] == 1:
maxL = 2
else:
for i in range(n-2):
mi = l[i]
ma = l[i+1]
if mi == ma or ma - mi > 1:
continue
for j in range(i+2, n):
if ma + 1 == l[j]:
ma = l[j]
maxL = max(maxL, j-i+1)
else:
break
print(maxL)
except EOFError:
break3、31 ms 4216K
while True:
try:
n = int(input())
l = list(map(int, input().split()))
l = sorted(list(set(l)))
tmp = maxL = 1
n = len(l)
for i in range(1, n):
if l[i] - l[i-1] == 1:
tmp += 1
else:
maxL = max(maxL, tmp)
tmp = 1
print(max(maxL, tmp))
except EOFError:
break
京公网安备 11010502036488号