题解 | #牛群的能量#

牛群的能量

https://www.nowcoder.com/practice/00f87ddcd18842d0824d487fd70a730e?tpId=354&tqId=10594767&ru=/exam/company&qru=/ta/interview-202-top/question-ranking&sourceUrl=%2Fexam%2Fcompany

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param energy int整型一维数组
     * @return int整型
     */
    public int maxEnergy (int[] energy) {
        // write code here
        if (energy == null || energy.length == 0) {
            return 0;
        }

        int n = energy.length;
        int[] dp = new int[n];
        dp[0] = energy[0];
        int maxSum = dp[0];

        for (int i = 1; i < n; i++) {
            dp[i] = Math.max(energy[i], dp[i - 1] + energy[i]);
            maxSum = Math.max(maxSum, dp[i]);
        }

        return maxSum;
    }
}

知识点:

  1. 动态规划:一种通过将问题分解成子问题,并存储子问题的解来解决问题的方法。
  2. 子数组最大和问题:找到一个数组中,连续子数组的最大和。

解题思路:

使用一个动态规划数组 dp 来存储以每个位置为结束点的子数组的最大能量值之和。初始条件为 dp[0] = nums[0],然后我们从 i = 1 开始,逐步计算每个位置的最大子数组和,即 dp[i] = max(nums[i], dp[i - 1] + nums[i])。同时,我们维护一个变量 maxSum 来记录全局的最大子数组和,最终返回这个 maxSum。

全部评论

相关推荐

程序员猪皮:看不到八股什么意思
点赞 评论 收藏
分享
尊尼获获:闺蜜在哪?
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务