Medium
You are given two integer arrays energyDrinkA
and energyDrinkB
of the same length n
by a futuristic sports scientist. These arrays represent the energy boosts per hour provided by two different energy drinks, A and B, respectively.
You want to maximize your total energy boost by drinking one energy drink per hour. However, if you want to switch from consuming one energy drink to the other, you need to wait for one hour to cleanse your system (meaning you won’t get any energy boost in that hour).
Return the maximum total energy boost you can gain in the next n
hours.
Note that you can start consuming either of the two energy drinks.
Example 1:
Input: energyDrinkA = [1,3,1], energyDrinkB = [3,1,1]
Output: 5
Explanation:
To gain an energy boost of 5, drink only the energy drink A (or only B).
Example 2:
Input: energyDrinkA = [4,1,1], energyDrinkB = [1,1,3]
Output: 7
Explanation:
To gain an energy boost of 7:
Constraints:
n == energyDrinkA.length == energyDrinkB.length
3 <= n <= 105
1 <= energyDrinkA[i], energyDrinkB[i] <= 105
import kotlin.math.max
class Solution {
fun maxEnergyBoost(energyDrinkA: IntArray, energyDrinkB: IntArray): Long {
var a0: Long = 0
var a1: Long = 0
var b0: Long = 0
var b1: Long = 0
val n = energyDrinkA.size
for (i in 0 until n) {
a1 = max((a0 + energyDrinkA[i]), b0)
b1 = max((b0 + energyDrinkB[i]), a0)
a0 = a1
b0 = b1
}
return max(a1, b1)
}
}