Есть задача:
Найти наибольший возрастающий срез массива.
Срезом будем считать последовательность подряд идущих элементов массива, где каждый следующий элемент больше предыдущего.
Для последовательности 1 2 3 1 2 5 7 1 2 1 2, существуют возрастающие срезы: 1 2 3, 1 2 5 7, 1 2, 1 2 вывести нужно срез 1 2 5 7
Для последовательности 1 2 3 1 2 5 1 2 7, существуют срезы 1 2 3, 1 2 5, 1 2 7 вывести нужно все срезы, так как они равной длины
Формат входных данных:
Дано натуральное число N, далее следуют N целых чисел.
Формат выходных данных:
В первой строке выведите длину максимального среза
Далее выведите содержание среза/срезов, разделяя элементы одним пробелом, каждый срез с новой строки
Sample Input 1:
7
2 1 2 3 1 5 7
Sample Output 1:
3
1 2 3
1 5 7
Sample Input 2:
5
1 2 3 4 5
Sample Output 2:
5
1 2 3 4 5
Sample Input 3:
7
1 2 1 5 1 7 1
Sample Output 3:
2
1 2
1 5
1 7
Вопрос: можно ли допилить мой код, или я двигаюсь в неправильном направлении? Направьте на путь истинный! Можно ли решить без второго массива?
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int[] array = new int[n];
for (int i = 0; i < n; i++) {
array[i] = in.nextInt();
}
int count = 0;
int count2 = 0;
for (int i = 0; i < array.length - 1; i++) {
if (array[i] < array[i + 1]) {
count++;
}
if (array[i] > array[i + 1]) {
count++;
count2 = count;
count = 0;
}
}
int length = Math.max(count + 1, count2);
System.out.println(length);
int count3 = 0;
for (int i = 1; i < array.length; i++) {
if (array[i] < array[i - 1]) {
System.out.print(array[i] + " ");
}
if (array[i] > array[i - 1]) {
System.out.print(array[i] + " ");
count3++;
}
if (count3 == length - 1) {
System.out.println();
count3 = 0;
}
}