@mi6an

Как найти наибольший возрастающий срез массива?

Есть задача:
Найти наибольший возрастающий срез массива.
Срезом будем считать последовательность подряд идущих элементов массива, где каждый следующий элемент больше предыдущего.
Для последовательности 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;
                }
            }
  • Вопрос задан
  • 713 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы