2012-01-28 7 views

उत्तर

14

क्या इस बारे में:

numbers.scanLeft(0)((acc, n) => math.max(0, acc + n)).max 
+5

'xs.tail.scanLeft (xs.head) ((एसीसी, एक्स =)> (एसीसी + x) .max (x))। Max' अगर सब संभवतः नकारात्मक हो सकता है। : डी – lcn

6

मैं समाधान स्कैन करने के लिए तह समाधान पसंद - वहाँ हालांकि निश्चित रूप से बाद में लालित्य। वैसे भी,

numbers.foldLeft(0 -> 0) { 
    case ((maxUpToHere, maxSoFar), n) => 
    val maxEndingHere = 0 max maxUpToHere + n 
    maxEndingHere -> (maxEndingHere max maxSoFar) 
}._2 
संबंधित मुद्दे