问题描述 在 1~N 的某个全排列中有多少个连号区间呢?这里所说的连号区间的定义是: 如果区间[L, R] 里的所有元素(即此排列的第 L 个到第 R 个元素)递增排序后能得到一个 长度为 R-L+1 的“连续”数列,则称这个区间连号区间。 输入格式 第一行是一个正整数 N (1 <= N <= 50000), 表示全排列的规模。 第二行是 N 个不同的数字 Pi(1 <= Pi <= N), 表示这 N 个数字的某一全排列。 输出格式 输出一个整数,表示不同连号区间的数目。 样例输入 1 4 3 2 4 1 样例输出 1 7 样例输入 2 5 3 4 2 5 1 样例输出 2 9
连号区间:某一个区间的最大值 - 最小值 = 区间的长度
样例1的连号区间:[1,2] , [2,2] , [3,3] , [4,4] , [2,2] , [3,3] , [4,4]
import java.util.Scanner; public class ConsecutiveNumSection { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int[] array = new int[n]; for (int i = 0; i < n; i++) { array[i] = scanner.nextInt(); } int count = 0; for (int i = 0; i < array.length; i++) { int max = array[i]; int min = array[i]; for (int j = i; j < array.length; j++) { if (array[j] > max){ max = array[j]; } if (array[j] < min){ min = array[j]; } if (max - min == j -i){ count++; } } } System.out.println(count); } }
运行结果