#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
int main() {
int n;
while (cin >> n) {
vector<int> aIntVec(n);
for (int i = 0; i < n; i++) {
cin >> aIntVec[i];
}
int maxLen = 0;
int left,right;
for (int i = 0; i < n; i++) {
left = i;
int _len = 1;
for (int j = i+1; j < n; j++) {
right = j;
int _abs = std::abs(aIntVec[right] - aIntVec[left]);
if (_abs <= 1) {
_len += 1;
left++; // update
if (right == n-1) {
maxLen = maxLen > _len ? maxLen : _len;
break;
}
} else {
maxLen = maxLen > _len ? maxLen : _len;
i = i + _len - 1;
break;
}
}
}
cout << maxLen << endl;
}
} import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNextInt()) { // 注意 while 处理多个 case
int n = in.nextInt();
int[] nums = new int[n];
for (int i = 0; i < n; i++) nums[i] = in.nextInt();
int maxLen = 1, tempLen = 1;
for (int i = 1; i < n; i++) {
if (Math.abs(nums[i] - nums[i - 1]) <= 1) {
tempLen++;
} else {
tempLen = 1;
}
maxLen = Math.max(maxLen, tempLen);
}
System.out.println(maxLen);
}
}
} n = int(input()) num = list(map(int, input().split())) left = 0 max_length = 0 length = 0 for i in range(1, n): if abs(num[i] - num[i-1]) <= 1: if length > max_length: max_length = length length = i - left + 2 elif abs(num[i] - num[i-1]) > 1: left = i length = i - left + 2 print(max_length)
while True: try: n = int(input()) nums = list(map(int, input().split())) left = -1 indexLeft, length = 0, 0 for i in range(n): if abs(left - nums[i]) <= 1: length = max(length, i - indexLeft + 1) else: indexLeft = i left = nums[i] print(length) except Exception as e: break
package main
import (
"fmt"
)
func Abs(a, b int) int{
if a >b{
return a-b
}
return b-a
}
func main() {
var n int
fmt.Scan(&n)
var k = make([]int, n+1) // 多一个
for i:=0;i<n;i++{
fmt.Scanf("%d", &k[i])
}
k[n]=-2 // -2-0>1,确保k最后的稳定部分计算进去
var left, right, max int = 0,1,1
for right <= n{
if Abs(k[right], k[right-1]) > 1{
if max < right - left{
max = right - left
}
left = right
right++
}else{
right++
}
}
fmt.Print(max)
} #include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> nums(n);
for (auto& num : nums)
{
cin >> num;
}
int max_len = 1;
for (int l = 0, r = 1; r < n; ++r)
{
//r停留在第一个不符合要求的位置,r-l就是区间的长度
while (r < n && abs(nums[r] - nums[r-1])<=1)
{
r++;
}
max_len = max(max_len, r-l);
l = r;
}
cout << max_len;
}
// 64 位输出请用 printf("%lld") import java.util.*;
import java.io.*;
// 简单题,常规双指针定窗移动,不定窗口长度统计
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(bf.readLine());
int[] input = Arrays.stream(bf.readLine().split(" ")).mapToInt(
Integer::parseInt).toArray();
int maxLen = 1;
//存储可变滑窗结果的数组
ArrayList<Integer> arr = new ArrayList<>();
arr.add(0);//初始添加首元素
//两两比较后面与前一个元素来判断后面元素是否要添加
for (int l = 0, r = 1; r < n; r++) {
if (Math.abs(input[r] - input[l]) <= 1) {
arr.add(r);
if (arr.size() > maxLen) {
maxLen = arr.size(); //统计最长稳定连续子串长度
}
} else {
arr.clear();
arr.add(input[r]);
}
l++;
}
System.out.println(maxLen);
}
}