Для данного массива A [0… n-1], содержащего n натуральных чисел, подмассив A [i… j] является битоническим, если существует ak с i <= k <= j такой, что A [i] <= A [i + 1]… = A [k + 1]> = .. A [j — 1]> = A [j]. Напишите функцию, которая принимает массив в качестве аргумента и возвращает длину битовой подмассивы максимальной длины.
Ожидаемая временная сложность решения O (n)
Простые примеры
1) A [] = {12, 4, 78, 90, 45, 23}, максимальная битовая подрешетка составляет {4, 78, 90, 45, 23}, длина которой равна 5.
2) A [] = {20, 4, 1, 2, 3, 4, 2, 10}, максимальная длина битовой подрешетки равна {1, 2, 3, 4, 2}, которая имеет длину 5.
Экстремальные Примеры
1) A [] = {10}, единственный элемент является битноинхронным, поэтому вывод равен 1.
2) A [] = {10, 20, 30, 40}, весь массив является битоническим, поэтому вывод равен 4.
3) A [] = {40, 30, 20, 10}, весь массив битонический, поэтому вывод равен 4.
Решение
Давайте рассмотрим массив {12, 4, 78, 90, 45, 23}, чтобы понять душу.
1) Создайте вспомогательный массив inc [] слева направо так, чтобы inc [i] содержал длину неубывающего подмассива, оканчивающегося на arr [i].
Для A [] = {12, 4, 78, 90, 45, 23}, inc [] равно {1, 1, 2, 3, 1, 1}
2) Создайте другой массив dec [] справа налево так, чтобы dec [i] содержал длину не увеличивающегося подмассива, начиная с arr [i].
Для A [] = {12, 4, 78, 90, 45, 23}, dec [] равен {2, 1, 1, 3, 2, 1}.
3) Когда у нас есть массивы inc [] и dec [], все, что нам нужно сделать, — это найти максимальное значение (inc [i] + dec [i] — 1).
Для {12, 4, 78, 90, 45, 23} максимальное значение (inc [i] + dec [i] — 1) равно 5 для i = 3.
|
С
|
Джава
|
питон
|
C #
|
PHP
|
Выход :
Length of max length Bitnoic Subarray is 5
Сложность времени: O (n)
Вспомогательное пространство: O (n)
Максимальная длина битонного субмассива | Установите 2 (O (n) время и O (1) пробел)
В качестве упражнения расширите вышеприведенную реализацию, чтобы вывести также самый длинный битонный подмассив. Приведенная выше реализация возвращает только длину такого подмассива.
Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.
Рекомендуемые посты:
- Максимальная длина битонного субмассива | Установите 2 (O (n) время и O (1) пробел)
- Максимальная сумма битонного подмассива
- Максимальная длина подмассива такая, что сумма подмассива будет четной
- Максимальная сумма подмассива четной длины
- Найти максимальное число повторений в O (n) времени и O (1) лишних пробелах
- Найти максимальный средний подмассив длины k
- Максимальная длина подмассива с разницей между соседними элементами, равной 0 или 1
- Длина самой длинной строгой битонной подпоследовательности
- Найти битоническую точку в заданной битовой последовательности
- Найти подрешетку с заданной суммой с допустимыми отрицаниями в постоянном пространстве
- Найти дубликаты за O (n) времени и O (1) лишних пробелов | Комплект 1
- Дублирует в массиве за O (n) время и использует O (1) дополнительное пространство | Set-3
- Вывести левый поворот массива за время O (n) и пространство O (1)
- Подсчитайте частоты всех элементов в массиве в O (1) дополнительном пространстве и O (n) времени
- Переставьте положительные и отрицательные числа в O (n) время и O (1) дополнительное пространство
0.00 (0%) 0 votes