题目:
动态规划:
分析:上面的图是老的数组,下面的是新的数组,通过老数组的当前值加上前一个值对应位置的新数组的值,就是新数组对应位置的新值,最后找到新的队列元素中的最大值即可。
代码如下:
#include <iostream>
#include <vector>
using namespace std;
class Solution
{
public:
int maxSubArray(vector<int>& nums)
{
int length = nums.size();
vector<int>resultV(length,0);
for(int i = 0; i<length;i++)
{
if(i == 0)
{
resultV[i] = nums[i] + 0;
}
else
{
resultV[i] = nums[i]+resultV[i-1];
if(resultV[i] < nums[i])
{
resultV[i] = nums[i]; // 这部很关键,如果前面的数列之和相加没有原数列对应位置i值大,就需要把原来数列i为hi值,赋给新的数列