0058 连续子数组的最大和
2016-08-14 17:59
351 查看
今天在牛客上做的一题,求连续子数组的最大值。
思路:
1)当当前和的值小于0,则丢弃,以下一个值作为新起点求和;
2)如果当前和的值大于记录的最大值,则更新最大值。
代码如下:
int FindGreatestSumOfSubArray(vector<int> array) {
if(array.empty())
return 0;
int maxSumOfSubArray = std::numeric_limits<int>::min();//初始化为计算机整型最小值
int currentSum = 0;
int start=0;
int len = array.size();
while(start<len)
{
if(currentSum<=0)//和小于0则放弃前面记录的和,因为前面已经成为负担,不需要
currentSum = array[start];
else
currentSum += array[start];
if(currentSum > maxSumOfSubArray)
maxSumOfSubArray = currentSum;
++start;
}
return maxSumOfSubArray;
}
思路:
1)当当前和的值小于0,则丢弃,以下一个值作为新起点求和;
2)如果当前和的值大于记录的最大值,则更新最大值。
代码如下:
int FindGreatestSumOfSubArray(vector<int> array) {
if(array.empty())
return 0;
int maxSumOfSubArray = std::numeric_limits<int>::min();//初始化为计算机整型最小值
int currentSum = 0;
int start=0;
int len = array.size();
while(start<len)
{
if(currentSum<=0)//和小于0则放弃前面记录的和,因为前面已经成为负担,不需要
currentSum = array[start];
else
currentSum += array[start];
if(currentSum > maxSumOfSubArray)
maxSumOfSubArray = currentSum;
++start;
}
return maxSumOfSubArray;
}
相关文章推荐
- 剑指offer:连续子数组最大和
- 连续子数组的最大和
- 获取数组最大连续增长子数组
- SQL Server 2008 R2――查找最小nIndex,nIndex存在而nIndex+1不存在 求最小连续数组中的最大值
- 题目:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个 子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为 O(n)。
- pyrhon--c++--连续子数组的最大和
- 面试题31:连续子数组的最大和
- 剑指offer — 连续数组的最大和
- 编程之美系列之求子数组的连续最大积
- python 连续子数组的最大和
- 【面试常见题目之动态规划】连续子序列的最大和(子数组的最大和)
- 编程题:在一个N*N的数组中寻找所有横,竖,左上到右下,右上到左下,四种方向的直线连续D个数字的和里面最大的值
- 数组非连续元素最大和
- 九度OJ 1372 最大子向量和(连续子数组的最大和)
- 2.分治算法研究-搜索数组中的最大连续子集和 2014-3-11 11:37 阅读(16)
- 连续子数组的最大和
- 剑指offer:连续子数组的最大和
- #剑指offer(17)--连续子数组的最大和
- 【难】连续子数组的最大和
- [剑指offer]连续子数组的最大和