思路描述
(第一次这么快(大概10分钟吧,对于小白的我来说不错了)作出一道题,而且一次就AC ^_^,那叫一个nice!!!)
说一下我的思路:这题题目说什么排序后成连续序列,然后长度为r-l+1,这意思不就是这个区间内所有的数必须是连续的吗?根本不用排序,只需要求出此区间的最大值,最小值,相减等于r-l就可以了,一下为我的代码
参考文献
无,没看任何题解
java 代码
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] a = new int[n];
for (int i = 0; i < n; i++) {
a[i] = sc.nextInt();
}
int max = Integer.MIN_VALUE;
int min = Integer.MAX_VALUE;
// 表示每个子区间的开头和结尾,开头为i,结尾为j
int count = 0;
for (int i = 0; i < n; i++) {
max = Math.max(max, a[i]);
min = Math.min(min, a[i]);
for (int j = i + 1; j < n; j++) {
max = Math.max(max, a[j]);
min = Math.min(min, a[j]);
if (max - min == j - i) {
count++;
}
}
max = Integer.MIN_VALUE;//重置一下最大最小值
min = Integer.MAX_VALUE;
}
System.out.println(count + n);
}
}