题解 | 连续子数组的最大和(二)

连续子数组的最大和(二)

https://www.nowcoder.com/practice/11662ff51a714bbd8de809a89c481e21

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param array int整型一维数组 
     * @return int整型一维数组
     */
    public int[] FindGreatestSumOfSubArray (int[] array) {
        // write code here
        int[] dp=new int[array.length];
        int left=0;
        int right=0;
        int sum=array[0];
        dp[0]=array[0];
        int max_sum=sum;
        int resr=0;
        int resl=0;
        for(int i=1;i<array.length;i++){
            right++;
           dp[i]=Math.max(dp[i-1]+array[i],array[i]);
            if(dp[i-1]+array[i]<array[i]){
                left=right;
            }
            if(dp[i]>max_sum||dp[i]==max_sum && (right-left+1)>(resr-resl+1)){
                max_sum=dp[i];
                resl=left;
                resr=right;
            }
        }
        
        return Arrays.copyOfRange(array,resl,resr+1);

        

    }
}

妈的,妈的,救命啊,好久没做算法题了,这个动态规划的题目都做不出来。

这个题目是利用一个辅助数组记录遍历第i个位置的时候以i结尾的最大连续数字和。然后,初始化4个辅助变量来记录在这个过程中下标的变化情况。当需要更新最大值的时候就更新最大连续数字和的数组的左右下标,当碰到相同最大值的时候就判断是否需要更新长度。

全部评论

相关推荐

Twilight_mu:经典我朋友XXXX起手,这是那种经典的不知道目前行情搁那儿胡编乱造瞎指导的中年人,不用理这种**
点赞 评论 收藏
分享
04-29 18:07
常州大学 Java
寂静羽翼:兄弟我已经亲身经历了,双非没实习很多大厂还是会给笔试的,可是有的公司笔试做的好也不给面一直卡着,ssob基本看我没实习都拒绝我了,但是每天投满偶尔也能有一两场初创公司的面试,但是薪资基本在五六千
点赞 评论 收藏
分享
昨天 18:25
沈阳大学 Java
HR已读不回,是我说话方式不对吗?
大白之主:你是串子吗? hr: 我们不招人了,把岗位挂着boss只是因为我闲得慌
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务