子数组的最大累加和问题

来源:互联网 发布:cdn网络节点 编辑:程序博客网 时间:2024/06/05 14:12

【题目】

给定一个数组arr,返回子数组中的最大累加和。
例如,arr[1,-2,3,5,-2,6,-1],其中子数组[3,5,-2,6]累加和最大为12,故返回12.

【要求】

时间复杂度为O(N),额外空间复杂度为O(1)

【代码】

public static void main(String[] args) {        int[] res={1,-2,3,5,-2,6,-1};        int r=maxSon1(res);        System.out.println(r);    }     //子数组的最大累加和问题    public static int maxSon(int[] arr){        if(arr==null||arr.length==0){            return 0;        }        int maxRes=Integer.MIN_VALUE;           for(int i=0;i<arr.length;i++){            int temp=arr[i];            for(int j=i+1;j<arr.length;j++){                              maxRes=Math.max(maxRes, temp+=arr[j]);            }        }        return maxRes;    }    public static int maxSon1(int[] arr){        if(arr==null||arr.length==0){            return 0;        }        int maxRes=Integer.MIN_VALUE;           int temp=0;        for(int i=0;i<arr.length;i++){            temp+=arr[i];            maxRes=Math.max(maxRes, temp);            temp=temp>0?temp:0;            //判断是否继续累加(temp<0,表示累加和为负了,应从下一个数重新累加)        }        return maxRes;    }
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 ln是什么意思 ln公式大全 插座l和n代表什么 ln函数运算法则 ln10等于多少 ln函数图像 ln求导 插座ln ln是什么函数 ln发音图解 ln怎么读 ln4等于多少 对数ln ln5等于多少 ln那个是火线 ln计算 ln2等于 电ln代表什么 ln运算公式 ln运算 ln车牌 ln怎么计算 ln函数定义域 lnx泰勒展开 电线l和n表示 电线l和n代表什么 ln的值 lp700 lp610 lp. .lp gp lp 查lp lp地址查询 lp什么意思 lp是什么意思 lp是什么牌子 lp查询 lp地址查询查询本机 lp68级防水能防多少水 lp仿传奇