Maximum Subarray. Θ(n)
2017-09-19 本文已影响8人
R0b1n_L33
///Maximum Subarray. Θ(n)
func maximumSubarray(_ array: [Int]) -> (Int, Int, Int) {
var low = -1, high = -1, sum = Int.min
var currentLow = -1, currentHigh = -1, currentSum = Int.min
for i in 0..<array.count {
if currentSum < 0 {
currentSum = array[i]
currentLow = i
} else {
currentSum += array[i]
}
currentHigh = i
if currentSum > sum {
sum = currentSum
high = currentHigh
low = currentLow
}
}
return (low, high, sum)
}
var s = try Int.randomArray(above: -10, under: 10)
maximumSubarray(s)