连续子数组的最大和_JAVA_简单

连续子数组的最大和

http://www.nowcoder.com/questionTerminal/459bd355da1549fa8a49e350bf3df484

  • 求最大连续子数组和 可以转化为 求以每一个元素结尾的最大子数组和的最大值,而以当前元素结尾的最大子数组和可以由以上一个元素结尾的最大子数组和求得,则可使用动态规划qiuj
  • 设n为当前遍历元素下标,e为当前元素,f(n)为以当前元素结尾的子数组和最大值,则f(n) = MAX(f(n - 1) + e, e),则最大子数组和为计算出的f(n)的最大值
public class Solution {
    public int FindGreatestSumOfSubArray(int[] array) {
        int nowSum = 0, maxSum = Integer.MIN_VALUE;

        for(int e : array) {
            // 以当前元素为结尾的数组最大和 即为 MAX(当前元素+前一个元素为结尾的最大和,当前元素)
            nowSum = nowSum > 0 ? nowSum + e : e;

            // 更新当前累加值后也更新最大累加值
            maxSum = maxSum >= nowSum ? maxSum : nowSum;
        }

        return maxSum;
    }
}
全部评论

相关推荐

今天 01:43
已编辑
西安电子科技大学 Java
阿里系 JAVA开发 40w 研究生
他们说改名可以收到offer_有点偏商务了这个说法:私企你拿什么时间玩?3天年假请假?还是想双休?
点赞 评论 收藏
分享
今天 11:46
已编辑
南京理工大学 C++
都没出结果,问问是各位会如何选择补充一下,华为应该是14左右县是南通市下面的一个县局
在敲键盘的布莱克很积极:兄弟,我给你提供一个角度,其他评论可能更多是从待遇和发展前景来看的,但是我建议你想一想你走哪条路更能产生对自己的身份认同。 如果你乐于钻研技术,喜欢工程实践,即使从华为失业你也能认可自己工程师的身份,不因为工作上不顺而失去对自己的尊重(因为这是你几乎必然会面对的情况),那就可以去华为,毕竟广阔天地大有可为。 但是如果你并不能因为技术产生自我的身份认同,那建议还是公务员吧,因为这种职业自带身份认同,不需要你有很强的兴趣与心理建设来支持,即使每月钱不多,你比较容易做到自己尊重自己,也容易在社会上得到他人的尊重。 不管钱多钱少,待遇怎么样,最终还是要自己过得开心,享受到了生活,才算是好的一生
投递华为等公司10个岗位 >
点赞 评论 收藏
分享
10-24 12:13
湖边轻嗅:官网出结果会慢一点,可以问你mt他们可以看到你大概的排名
投递快手等公司10个岗位
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务