题解 | #牛群的最大能量环#

牛群的最大能量环

https://www.nowcoder.com/practice/653d5a6041a04b8cb9b082eeb1429d1c

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param energy int整型一维数组 
     * @return int整型
     */
    public int maxEnergyCircular (int[] energy) {
        // write code here
        // 情况1:最大能量值不跨数组,直接请求最大能量值
        // 情况2:最大能量值跨数组,求出最小能力值,总和减去最小能力值 即为 最大能量值
        // 取情况1和情况2的最大能量值
        // 注意情况2中可能为0,即一个不取,这时应该取max

        int[] dp1 = new int[energy.length];
        int max = energy[0];
        dp1[0] = energy[0];
        for (int i = 1; i < energy.length; i++) {
            dp1[i] = Math.max(energy[i],dp1[i-1]+energy[i]);
            max = Math.max(max, dp1[i]);
        } 

        int[] dp2 = new int[energy.length];
        int min = energy[0];
        dp2[0] = energy[0];
        int sum = energy[0];
        for (int i = 1; i < energy.length; i++) {
            dp2[i] = Math.min(energy[i],dp2[i-1]+energy[i]);
            min = Math.min(min, dp2[i]);
            sum += energy[i];
        } 

        return sum - min == 0 ? max : Math.max(max, sum - min);
    }
}

全部评论

相关推荐

Dream_coding:你是不是只投大厂了
点赞 评论 收藏
分享
02-08 15:53
门头沟学院 Java
CoderEcho:让公司知道便宜没好货
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务