Immagina di ottenere una fetta di qualche regione montuosa, questo comporterebbe una forma simile a questa:
4 _
3 _ _ __/ \
2 / \__/ \ _/ \_ /
1 / \ / \_/
0 \/
12322223210012233343221112
Come possiamo vedere, possiamo rappresentarlo (in una certa misura) con una sequenza di numeri interi.
Ai fini di questa sfida, definiamo una valle come una sottosequenza contigua in cui i valori inizialmente diminuiscono e da un certo punto in poi aumentano. Più formalmente per una sequenza a valle saranno gli indici per i quali vale quanto segue:
- l'inizio e l'endpoint della valle sono gli stessi:
- la valle inizia e finisce quando la regione si abbassa:
- la valle non è piatta:
- la valle inizialmente diminuisce:
- la valle ad un certo punto aumenterà:
Ora definiamo la larghezza di una tale valle come la dimensione degli indici , cioè. .
Sfida
Dato un profilo di altezza (sequenza di numeri interi non negativi), il tuo compito è determinare la larghezza della valle più ampia.
Esempio
Dato il profilo di altezza [1,2,3,2,2,2,2,3,2,1,0,0,1,2,2,3,3,3,4,3,2,2,1,1,1,2]
, possiamo visualizzarlo come prima:
4 _
3 _ _ __/ \
2 / \__/ \ _/ \_ /
1 / \ / \_/
0 \/
12322223210012233343221112
aaaaaa ccccc
bbbbbbbbb
Nota come la seconda valle [3,2,1,0,0,1,2,2,3]
non si estende ulteriormente a destra perché il punto più a sinistra è e non . Inoltre non aggiungiamo i restanti due s perché richiediamo che l'endpoint sia più alto rispetto al penultimo punto.
Pertanto la larghezza della valle più ampia è .
Regole
- L'input sarà una sequenza di numeri interi non negativi (mi dispiace per gli olandesi)
- puoi presumere che ci sia sempre almeno una valle
- L'output sarà la dimensione della valle più ampia come definito sopra
Casi test
[4,0,4] -> 3
[1,0,1,0,1] -> 3
[1,0,2,0,1,2] -> 4
[13,13,13,2,2,1,0,1,14,2,13,14] -> 4
[1,2,3,2,2,2,2,3,2,1,0,0,1,2,2,3,3,3,4,3,2,2,1,1,1,2] -> 9
[3,2,0,1,0,0,1,3] -> 4
[3,1,2,3]
)
[4,0,4]
sarebbe un caso del genere.
[3,2,0,1,0,0,1,3]
. Tutte le risposte attuali restituiscono 8, secondo la tua definizione credo che dovrebbe essere 4.