题目描述:
给你一个长度为 n 整数序列,如果这个序列至少存在一个长度为 k 的区间,里面的所有数都 >= k。那么 k 就是这个序列的密集度。当然一个序列可能存在多个密集度,求这个序列的最大密集度。
示例1:
输入
5
1 3 4 5 2
输出
3
说明
3,4,5 满足每个数都大于等于3,最大密集度为 3
示例2:
输入
5
3 1 4 5 2
输出
2
说明
4,5 满足每个数都大于等于2,最大密集度为 2,不存在更大的密集度
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()){
int n = sc.nextInt();
int[] arr = new int[n];
for (int i = 0; i < n; i++) {
arr[i] = sc.nextInt();
}
int j = 0;
int k = 0;
int res = 0;
for(int i = 0; i < n; i++){
k = j - i + 1;
int min = i;
for(int z = i; z <= j; z++){
if(arr[i] > arr[z])
min = z;
}
if(arr[min] >= k){
res = Math.max(res, k);
i--;
}
else{
if(min != i)
i = min - 1;
}
j++;
if(j == n)
break;
}
System.out.println(res);
}
}
}