题解 | #牛群的能量# java
牛群的能量
https://www.nowcoder.com/practice/00f87ddcd18842d0824d487fd70a730e
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param energy int整型一维数组 * @return int整型 */ public int maxEnergy (int[] energy) { // write code here int n = energy.length; int[] dp = new int[n]; dp[0] = energy[0]; int ans = dp[0]; for (int i = 1; i < n; i++) { if (dp[i - 1] >= 0) { dp[i] = energy[i] + dp[i - 1]; } else { dp[i] = energy[i]; } ans = Math.max(ans, dp[i]); } return ans; } }
编程语言是Java。
该题考察的知识点是动态规划。
代码的文字解释:
maxEnergy
方法接受一个整型数组energy
作为参数,并返回一个整数。- 首先获取数组的长度,并创建一个长度为
n
的整型数组dp
,用于记录最大能量值。 - 初始化
dp[0]
为energy[0]
,并将其作为当前最大能量值。 - 从
i=1
开始,使用循环计算dp[i]
的值。若前一天的能量值大于等于0,则当前最大能量值为当前能量值与前一天最大能量值之和;否则,当前最大能量值为当前能量值。 - 在每次更新
dp[i]
时,都更新最终的最大能量值ans
为当前最大能量值与之前的最大能量值的较大值。 - 循环结束后,返回最终的最大能量值
ans
。