Специфікація
Цей виклик простий у формулюванні: ваш вхід - це не порожній масив негативних цілих чисел, і ваше завдання полягає в тому, щоб розділити його на якомога менше збільшуваних підрядів. Більш формально, якщо вхідний масив є A
, то вихід є масивом масивів B
таким чином:
- Кожен масив
B
формує розділA
на неперервні (не обов'язково суміжні) підпорядкування. Індуктивно це означає, що абоB
є однотонний масив, що міститьA
, або перший елемент зB
являє собоюA
підпорядкування, а решта утворюють розділ,A
з яким видаляється підпорядкованість . - Кожен масив у
B
(не обов'язково суворо) збільшується. - Кількість масивів у
B
мінімальна.
І введення, і вихід можуть бути зроблені у форматі рідного масиву вашої мови. Зверніть увагу, що може бути кілька правильних виходів.
Приклад
Розглянемо вхідний масив A = [1,2,1,2,5,4,7,1]
. Один з можливих результатів - це B = [[1],[1,2,4,7],[1,2,5]]
. Умова розділу видно на цій схемі:
A 1 2 1 2 5 4 7 1
B[0] 1
B[1] 1 2 4 7
B[2] 1 2 5
Також кожен масив у B
збільшується. Нарешті, A
не можна розділити на дві зростаючі послідовності, тому довжина B
також мінімальна. Таким чином, це дійсний вихід.
Правила та оцінка
Ви можете написати функцію або повну програму. Виграє найнижчий байт, а стандартні лазівки заборонені. Час не обмежений, але перед тим, як подавати його, слід евакуювати рішення щодо всіх тестових випадків.
Тестові справи
Показано лише один можливий вихід, але може бути кілька дійсних варіантів. Зокрема, порядок масивів у результаті не має значення (але кожен окремий масив повинен бути у порядку зростання).
[0] -> [[0]]
[3,5,8] -> [[3,5,8]]
[2,2,2,2] -> [[2,2,2,2]]
[1154,1012,976,845] -> [[845],[976],[1012],[1154]]
[6,32,1,2,34,8] -> [[1,2,8],[6,32,34]]
[1,12,1,12,1,13] -> [[1,1,1,13],[12,12]]
[6,4,6,13,18,0,3] -> [[0,3],[4,6,13,18],[6]]
[1,2,3,2,3,4,7,1] -> [[1,1],[2,2,3,4,7],[3]]
[0,9,2,7,4,5,6,3,8] -> [[0,2,3,8],[4,5,6],[7],[9]]
[7,1,17,15,17,2,15,1,6] -> [[1,1,6],[2,15],[7,15,17],[17]]
[4,12,2,10,15,2,2,19,16,12] -> [[2,2,2,12],[4,10,15,16],[12,19]]
[10,13,9,2,11,1,10,17,19,1] -> [[1,1],[2,10,17,19],[9,11],[10,13]]
[3,7,3,8,14,16,19,15,16,2] -> [[2],[3,3,8,14,15,16],[7,16,19]]
[15,5,13,13,15,9,4,2,2,17] -> [[2,2,17],[4],[5,9],[13,13,15],[15]]
B
, сподіваюся, вони зараз зрозуміліші.
[0,5,2,0] -> [[0,5],[0,2]]
(наприклад, переробка першого нуля, а не використання кожного з них один раз). Це навмисно?