LeetCode 53(Maximum Subarray)Java

来源:互联网 发布:nba2konline刷精华软件 编辑:程序博客网 时间:2024/04/29 09:59

原题:Find the contiguous subarray within an array (containing at least one number) which has the largest sum.

寻找子数组的最大值

思路:对于一个确定的子数组最大值来说,它一定满足:以其开头左边元素为末尾的任何一段子数组的和都小于0;若存在一段大于0的,则最大子数组就可以延长;

所以设置一个变量,用于实时更新数组现在的和,记为sum,当sum小于0时,sum置为0;意为可以舍弃之前的部分,重新开始记录;

代码:

public class Solution {    public int maxSubArray(int[] nums) {        int res=Integer.MIN_VALUE;        int sum=0;        for(int i=0;i<nums.length;i++){            if(sum<0){                sum=0;            }            sum+=nums[i];            res=res>=sum?res:sum;        }        return res;    }}


0 0