31 连续子数组的最大和
2016-07-18 20:43
330 查看
描述:
实现代码:
{ curSum=arr[index]; } if (max<curSum) { max=curSum; } return curSum; } private static Long greatestSumOfSubarrays(int[] arr, int length) { // TODO Auto-generated method stub
if (arr.length==0||arr==null) { return null; } int max=arr[0]; int curSum=arr[0]; for (int i = 1; i < arr.length; i++) { if (curSum<=0) { curSum=arr[i];
}else { curSum=curSum+arr[i]; } if (curSum>max) { max=curSum; } } return (long) max; }}
测试结果:
实现代码:
package question31; public class GreatestSumOfSubarrays { static int max=-Integer.MAX_VALUE; public static void main(String[] args) { // TODO Auto-generated method stub int arr[]={1,-2,3,10,-4,7,2,-5}; long result=greatestSumOfSubarrays(arr,arr.length); recursive(arr,arr.length-1); System.out.println("递归解法: "+max); System.out.println("普通解法: "+result); } private static int recursive(int[] arr, int index) { // TODO Auto-generated method stub if(<pre name="code" class="java"> arr.length==0||arr==null) {max=0; return 0 } if (index<=0) { return arr[index]; } int curSum=recursive(arr, index-1); // curSum 代表递归表达公式中的 f(i) if (curSum>0) { curSum=curSum+arr[index]; }else
{ curSum=arr[index]; } if (max<curSum) { max=curSum; } return curSum; } private static Long greatestSumOfSubarrays(int[] arr, int length) { // TODO Auto-generated method stub
if (arr.length==0||arr==null) { return null; } int max=arr[0]; int curSum=arr[0]; for (int i = 1; i < arr.length; i++) { if (curSum<=0) { curSum=arr[i];
}else { curSum=curSum+arr[i]; } if (curSum>max) { max=curSum; } } return (long) max; }}
测试结果:
相关文章推荐
- 2nd 7月18日
- iOS Crash之NSRangeException
- 【BZOJ-2618】凸多边形 计算几何 + 半平面交 + 增量法 + 三角剖分
- 2016夏季练习——线段树
- 009——hibernate单表继承:每棵类继承树使用一个表
- Machine Learning Reviews
- 12个不可不知的Sublime Text应用技巧和诀窍
- 【图解】Dev C++单步调试的方法
- JVM内存划分
- 20.嵌套类型
- 跟着廖雪峰学 JavaScript - 基础部分 - 查漏补缺
- MySQL外键的作用和创建
- utility c++ 用法
- 异步操作之handler+message<一>
- Redis事务命令
- 前言-初来咋到-保持微笑
- 一些实用的Windows注册表
- 将大分辨率的图片通过缩放显示在手机上
- 我就是不想说话
- PHP从入门到接到外包合同,再到放弃