题目描述
思路分析
线性dp
f
[
i
]
:
[
0
,
i
]
f[i]:[0,i]
f[i]:[0,i]上的最大子序和
f
[
i
]
=
m
a
x
(
f
[
i
−
1
]
,
0
)
+
n
u
m
s
[
i
]
f[i]=max(f[i-1],0)+nums[i]
f[i]=max(f[i−1],0)+nums[i]
代码实现
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int res=INT_MIN;
for(int i=0,last=0;i<nums.size();i++){
last=nums[i]+max(0,last);
res=max(res,last);
}
return res;
}
};