北京企業(yè)優(yōu)化推廣網(wǎng)站淄博
思路
動態(tài)規(guī)劃:因為每一步要么選A,要么選B,所以問題可以轉(zhuǎn)換為求最后一步從A選或從B選中的較大值
解題過程
定義而二維數(shù)組dp,dp[i][0]表示最后一步從A取能獲得的最大能量,dp[i][1]表示最后一步從B取能獲得的最大能量狀態(tài)轉(zhuǎn)換方程為:
dp[i][0]=Math.max(dp[i-1][0]+energyDrinkA[i],dp[i-1][1])
dp[i][1]=Math.max(dp[i-1][1]+energyDrinkB[i],dp[i-1][0])
最后返回Math.max(dp[len-1][0],dp[len-1][1])即可
Code
class Solution {public long maxEnergyBoost(int[] energyDrinkA, int[] energyDrinkB) {int len=energyDrinkA.length;long dp[][]=new long[len][2];dp[0][0]=energyDrinkA[0];dp[0][1]=energyDrinkB[0];for(int i=1;i<len;i++){dp[i][0]=Math.max(dp[i-1][0]+energyDrinkA[i],dp[i-1][1]);dp[i][1]=Math.max(dp[i-1][1]+energyDrinkB[i],dp[i-1][0]);}return Math.max(dp[len-1][0],dp[len-1][1]);}
}作者:菜卷
鏈接:https://leetcode.cn/problems/maximum-energy-boost-from-two-drinks/solutions/2974033/chao-ji-yin-liao-de-zui-da-qiang-hua-nen-vef1/
來源:力扣(LeetCode)
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。