最大和的子陣列
阿新 • • 發佈:2021-01-18
最大和的子陣列
//最大和的子陣列
/*
請計算給出的陣列(至少含有一個數字)中具有最大和的子陣列(子陣列要求在原陣列中連續)
例如:給出的陣列為[−2,0,−3,4,−2,2,2,−5,4],
子陣列[−2,0,−3,4,−2,2,2,−5,4],具有最大的和:6.
*/
#include<string>
#include<vector>
#include<algorithm>
#include<iostream>
#include<memory>
using namespace std;
class Solution {
public:
/*
*從頭開始累加,直到和為負。此時前面這段不能給後面的串帶來正收益,
*應捨棄,sum清零然後在開始統計最大的sum.
*/
int maxSubArray(int* A, int n) {
if (n == 0)
return 0;
int sum = 0, maxSum = A[0];
for (int i = 0; i < n; ++i)
{
sum += A[i];
if (maxSum < sum)
maxSum = sum;
if (sum < 0)
sum = 0;
}
return maxSum;
}
};