码迷,mamicode.com
首页 > 其他好文 > 详细

53. Maximum Subarray

时间:2018-12-23 11:08:05      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:NPU   another   res   数组元素   exp   imu   mat   public   subarray   

Given an integer array nums, find the contiguous subarray (containing at least one number) which has the largest sum and return its sum.

Example:

Input: [-2,1,-3,4,-1,2,1,-5,4],
Output: 6
Explanation: [4,-1,2,1] has the largest sum = 6.

Follow up:

If you have figured out the O(n) solution, try coding another solution using the divide and conquer approach, which is more subtle.

Solution1:

class Solution {
    public int maxSubArray(int[] nums) {
        int currsum = 0;
        int res = Integer.MIN_VALUE;//注意不能初始化为0,因为数组元素可能是负数,所以用Integer.MIN_VALUE,如果有需要,也有Integer.MAX_VALUE.
        for(int num: nums){
            currsum = Math.max(currsum+num,num);
            res = Math.max(res,currsum);
        }
        return res;
    }
}

如果当前sum比当前数组元素小,则给当前sum赋值当前数组元素,太巧妙了(不是,是我笨)。

然后上次循环的result和当前的sum比较取大的即可。

53. Maximum Subarray

标签:NPU   another   res   数组元素   exp   imu   mat   public   subarray   

原文地址:https://www.cnblogs.com/wentiliangkaihua/p/10163216.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!