Qualcuno ha un'implementazione Scala di Kadane's algorithm eseguita in uno stile funzionale?Algoritmo di Kadane in Scala
8
A
risposta
14
Che dire di questo:
numbers.scanLeft(0)((acc, n) => math.max(0, acc + n)).max
6
io preferisco la soluzione pieghevole per la soluzione di scansione - anche se c'è sicuramente eleganza a questi ultimi. In ogni caso,
numbers.foldLeft(0 -> 0) {
case ((maxUpToHere, maxSoFar), n) =>
val maxEndingHere = 0 max maxUpToHere + n
maxEndingHere -> (maxEndingHere max maxSoFar)
}._2
Problemi correlati
- 1. algoritmo di kadane in java
- 2. Kadane algoritmo numeri negativi
- 3. di Kadane per trovare sottoarray con la somma massima
- 4. Quale algoritmo di conversione in scala di grigi utilizza OpenCV cvtColor()?
- 5. Underflow in Algoritmo di inoltro per HMM
- 6. Algoritmo di Peterson in Java?
- 7. Algoritmo di Sudoku in C#
- 8. Algoritmo di Bresenham in Javascript
- 9. Algoritmo di pacchettizzazione in rtree in boost
- 10. Algoritmo ungherese in Python
- 11. Algoritmo Floodfill in Android
- 12. Algoritmo di disegno della linea subpixel preciso (algoritmo di rasterizzazione)
- 13. Algoritmo di pesata rapida con algoritmo di compressione del percorso
- 14. Algoritmo di Google Maps
- 15. Algoritmo di accorciamento URL
- 16. Algoritmo di confronto matrice
- 17. algoritmo di oggetti circostanti
- 18. Algoritmo di decrittografia AES
- 19. Algoritmo di corrispondenza albero?
- 20. zaino algoritmo di variazione
- 21. problema algoritmo di selezione
- 22. Algoritmo di trasformazione affine
- 23. Algoritmo di riempimento poligono
- 24. Algoritmo di distribuzione bilanciato
- 25. Algoritmo di pianificazione
- 26. Algoritmo di Throttle .NET
- 27. griglia algoritmo di puzzle
- 28. Algoritmo di crittografia semplice
- 29. Algoritmo di disturbo Perlin
- 30. Algoritmo di cambio monete
'xs.tail.scanLeft (xs.head) ((acc, x) => (acc + x) .max (x)). Max' se tutti possono eventualmente essere negativo. : D – lcn