连续子数组的最大和
来源:互联网 发布:印刷记账软件 编辑:程序博客网 时间:2024/05/05 15:15
一、思路
- 最直观的方法:枚举出数组的所有子数组并求出它们的和,一个长度为n的数组,总共有n(n+1)/2个子数组,计算出所有子数组的和,最快也要O(n的平方)的时间,不是最优解法。
- 分析数组的规律:假如数组为{1,-2,3,10,-47,2,-5},初始化和为0,第一步加上第一个数字1,此时和为1,接下来第二步加上数字-2,和就变成了-1;第三步加上数字3,由于原来累计和为-1,小于0,那如果用-1加上3和就会比3小,也就是说从第一个数字开始的子数组的和会小于从第三个数字开始的子数组的和,因此不用考虑第一个数字开始的子数组,之前累计的和也被抛弃。依次类推,得到最大和。
public class Solution { public int FindGreatestSumOfSubArray(int[] array) { boolean invalidInput = false; if(array == null || array.length == 0){ invalidInput = true; return 0; } invalidInput = false; int nCurSum = 0; int nGreatestSum = 0x80000000; for(int i = 0;i < array.length;i++){ if(nCurSum <= 0){ nCurSum = array[i]; }else{ nCurSum += array[i]; } if(nCurSum > nGreatestSum){ nGreatestSum = nCurSum; } } return nGreatestSum; }}
1 0
- 数组连续子数组的和最大
- 数组连续子数组的最大和
- 连续子数组的最大和
- 连续子数组的最大和
- 连续子数组的最大和
- 求连续子数组的最大和
- 连续子数组的最大和
- 求连续子数组的最大和
- 求连续子数组的最大和
- 连续子数组的最大和
- 连续子数组的最大和
- (8)连续子数组的最大和
- 求连续子数组的最大和
- 求连续子数组的最大和
- 连续子数组的最大和
- 求连续子数组的最大和
- 连续子数组的最大和
- 连续子数组的最大和
- javascript声明提升现象及严格模式
- linker command failed with exit code 1 (use -v to see invocation)
- Opendir readdir
- 使用 Nginx Upload Module 实现上传文件功能
- JAVA内存模型(Java Memory Model)
- 连续子数组的最大和
- 关于Ruby, Ruby on Rails的一些概念属性的介绍
- 表单
- Integer与int的区别
- AXIS2的简单实例
- Json 与 NSDictionary 或 NSArray 互转
- This certificate has an invalid issuer
- javascript对全局变量值的修改(如记数器)
- 注册页面