输入包括两行,第一行包括一个整数n(1 ≤ n ≤ 10^5),即数列的长度; 第二行n个整数a_i, 表示数列中的每个数(1 ≤ a_i ≤ 10^9),以空格分割。
输出一个整数,表示最长的长度。
6 7 2 3 1 5 6
5
import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws IOException { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] array = new int[n]; for(int i=0;i<n;++i) { array[i] = sc.nextInt(); } // 以array[i]结尾的连续序列长度 int[] left = new int[n]; // 以array[i]开头的连续序列长度 int[] right = new int[n]; int res = 0; left[0] = 1; right[n-1] = 1; for(int i=1;i<array.length;++i) { if(array[i]>array[i-1]) { left[i] = left[i-1]+1; } else { left[i] = 1; } } for(int i=n-2;i>=0;--i) { if(array[i]<array[i+1]) { right[i] = right[i+1]+1; } else { right[i] = 1; } } for(int i=1;i< array.length-1;++i) { if(array[i-1]+1<array[i+1]) { int sum = left[i-1]+right[i+1]+1; if(sum>res) { res = sum; } } } // 只改变头、尾可以达到的最大结果 res = Math.max(res, 1+right[1]); res = Math.max(res, 1+left[n-2]); System.out.println(res); } }