最大子数组

来源:互联网 发布:淘宝ifashion假货多吗 编辑:程序博客网 时间:2024/05/16 15:26

给定一个整数数组,找到一个具有最大和的子数组,返回其最大和。

给出数组[−2,2,−3,4,−1,2,1,−5,3],符合要求的子数组为[4,−1,2,1],其最大和为6

累加和sum  如果sum<0 sum抛弃原来的值 sum还原为0 继续加  如果sum>0 继续加 然后返回最大值  代码如下

/** * Created by jason on 2016/3/14. */class Solution81 {    public int maxSubArray(int[] nums) {        if (nums == null || nums.length == 0) return 0;        int sum = 0;        int result = nums[0];        for (int i=0; i<nums.length; i++) {            sum += nums[i];            if (sum > 0) {                sum+=nums[i];            }else {                sum=0;            }        }        if (sum > result) {            result = sum;        }        return result;    }}public class LC81 {    public static void main(String[] args) {        Solution81 solution81 = new Solution81();        int[] nums = new int[]{-2,2,-3,4,-1,2,1,-5,3};        System.out.println(solution81.maxSubArray(nums));    }}


0 0
原创粉丝点击