【1】题目
题目:输入一个整型数组,数组里有正数也有负数。数组中一个或连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。
【2】思路
【3】代码
// Test30.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include "pch.h"
#include <iostream>
#include<vector>
using namespace std;
//连续和最大的数组
//数组规律解决问题
int FindGreatestSum(int *data, int len)
{
if (data==nullptr||len<=0)
{
return 0;
}
int curSum = data[0];
int maxSum = curSum;//最大的整数的边界条件
for (int i =1; i < len; i++)
{
cout << data[i] << endl;
if (curSum<=0)
{
curSum = data[i];
}
else
{
curSum+= data[i];
}
if (maxSum<= curSum)
{
maxSum=curSum ;
}
}
return maxSum;
}
int main()
{
int array[10] = {1,2,3,4,-1,-3,-20};
int result= FindGreatestSum(array, 7);
printf("%d\n", result);
}