LeetCode in Kotlin

3259. Maximum Energy Boost From Two Drinks

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:

Solution

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)
    }
}