题目描述
HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序列的和,你会不会被他忽悠住?(子向量的长度至少是1)
class Solution {
public:
int FindGreatestSumOfSubArray(vector<int> array) {
if(array.size() == 1)return array[0];
int maxSum = 0;
int sum = 0;
for(int i = 0; i < array.size(); ++i)
{
sum += array[i];
if(maxSum < sum)
maxSum = sum;
//当数组前面的数字相加时为负数,那么就不计算在结果中
if(sum < 0)
sum = 0;
}
//当全为负数或者只有负数和0的情况
if(maxSum == 0)
{
maxSum = array[0];
for(int i = 1; i < array.size();++i)
{
if(maxSum < array[i])
maxSum = array[i];
}
}
return maxSum;
}
};
继续阅读与本文标签相同的文章
上一篇 :
从开发到测试再到测试开发
下一篇 :
创业教育中的产教融合该怎样推进
-
什么是企业部署物联网的重点?
2026-05-18栏目: 教程
-
法大大创始人兼CEO黄翔:中国电子签名市场渗透率不到1% 复合增长率可达200%
2026-05-18栏目: 教程
-
python运算符
2026-05-18栏目: 教程
-
史上最强多线程面试44题和答案:线程锁+线程池+线程同步等
2026-05-18栏目: 教程
-
9月最新184道阿里、百度、腾讯、头条Java面试题合集
2026-05-18栏目: 教程
