python 代码
n = int(input())
a = list(map(int,input().split()))
cnt = [0] * 100010
l,r = 0,0
res,s = 0,0
while r < n:
if cnt[a[r]] == 0:
s = s + 1
cnt[a[r]] += 1
while s > 2:
cnt[a[l]] -= 1
if cnt[a[l]] == 0:
s = s - 1
l = l + 1
res = max(res,r-l+1)
r = r + 1
print(res)
# ----------------------------------超时-------------------------------------------------#
# n = int(input())
# a = list(map(int,input().split()))
# l,r = 0,1 # 左右指针
# res = 1 # 存储答案
# cnt = 1 # 记录当前长度
# maxc = a[l] # 初始化当前最大值
# minc = a[l] # 初始化当前最小值
# while r < n: # 保证不越界
# maxc = max(maxc,a[r]) # 计算目前最大值
# minc = min(minc,a[r]) # 计算目前最小值
# if maxc - minc <= 1: # 判断是否满足第二个约束条件
# cnt = cnt + 1 #满足所有条件,当前右指针元素合法
# r = r + 1 # 右指针右移
# else: # 不满足第二个约束条件
# l = l + 1 # 左指针右移,尝试减小极差
# maxc = max(a[l:r + 1])
# minc = min(a[l:r + 1])
# cnt = cnt - 1
# res = max(cnt,res)
# print(res)