题解 | #子数组的最大累加和问题#

子数组的最大累加和问题

http://www.nowcoder.com/practice/554aa508dd5d4fefbf0f86e5fe953abd

import java.util.*;


public class Solution {
    /**
     * max sum of the subarray
     * @param arr int整型一维数组 the array
     * @return int整型
     */
    public int maxsumofSubarray (int[] arr) {

        if (arr.length == 0) {
            return arr[0];
        }

        int max = arr[0];
        int sum = arr[0];

        /***
         * 该题的本质是一个个往后累加,若过程中累加和小于0,那么就需要将前面的数都舍掉,继续重新从下一个数累加,
         * 过程中需要保存累加的最大值,若加上后一个数大于前面的值,则对最大值重新赋值,反之则不变。
         */
        for (int i = 1; i < arr.length; i++) {

            if (sum < 0) {
                sum = arr[i];
            } else {
                sum = sum + arr[i];
            }

            max = Math.max(max, sum);
        }

        return max;
    }
}
全部评论

相关推荐

09-26 19:45
门头沟学院 Java
点赞 评论 收藏
分享
09-25 00:00
已编辑
电子科技大学 Java
球球与墩墩:这不是前端常考的对象扁平化吗,面试官像是前端出来的 const flattern = (obj) => { const res = {}; const dfs = (curr, path) => { if(typeof curr === 'object' && curr !== null) { const isArray = Array.isArray(curr); for(let key in curr) { const newPath = path ? isArray ? `${path}[${key}]` : `${path}.${key}` : key; dfs(curr[key], newPath); } } else { res[path] = curr } } dfs(obj); return res; }
查看3道真题和解析
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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