LeetCode-in-Java

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

public class Solution {
    public long maxEnergyBoost(int[] energyDrinkA, int[] energyDrinkB) {
        long a0 = 0;
        long a1 = 0;
        long b0 = 0;
        long b1 = 0;
        long n = energyDrinkA.length;
        for (int i = 0; i < n; i++) {
            a1 = Math.max(a0 + energyDrinkA[i], b0);
            b1 = Math.max(b0 + energyDrinkB[i], a0);
            a0 = a1;
            b0 = b1;
        }
        return Math.max(a1, b1);
    }
}