求子数组和的最大值
来源:互联网 发布:java字符串首字母小写 编辑:程序博客网 时间:2024/06/05 07:41
3.求子数组的最大和
题目:
输入一个整形数组,数组里有正数也有负数。
数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
求所有子数组的和的最大值。要求时间复杂度为O(n)。
例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,
因此输出为该子数组的和18。
ANSWER:
A traditional greedy approach.
Keep current sum, slide from left to right, when sum < 0, reset sum to 0.
int maxSubarray(int a[], int size) {
if (size<=0) error(“error array size”);
int sum = 0;
int max = - (1 << 31);
int cur = 0;
while (cur < size) {
sum += a[cur++];
if (sum > max) {
max = sum;
} else if (sum < 0) {
sum = 0;
}
}
return max;
}
要明白题意
0 0
- 求数组的子数组和最大值
- 求子数组和的最大值算法
- 求子数组和的最大值
- 求子数组的最大值
- 求子数组的最大值
- 求数组的子数组和的最大值
- 求数值型数组的子数组和最大值
- poj1050-求二维数组子数组和的最大值
- 求数组子数组和最大值
- 求所有子数组的和的最大值
- 求连续子数组和的最大值的变种问题
- 求整型数组所有子串的和中的最大值
- 每日一算法:求连续子数组和的最大值
- Java实现算法之--求子数组和的最大值
- Java实现算法之--求子数组和的最大值
- 求数组的子数组之和最大值
- 求数组子数组之和的最大值
- 求子数组最大值
- array_merge() 函数的使用
- Struts2框架的传值问题
- 简单的分析网易热这款产品
- 数据结构和算法分析习题解答之二——第1章习题解答
- IOS开发 多线程
- 求子数组和的最大值
- Android学习历程19-安卓打包结构混淆
- C#关键字
- win7系统下安装、配置、测试nginx
- git简单基本操作
- C#数据类型
- Android学习笔记----Activity的生命周期
- ArrayList类型变量
- 初识solr + tomcat 部署(非集群)