思路:1.首先定义一个db数组 其中db[i]的值代表到第i位的时候,以arr[i]结尾的连续子数组的最大累加和;
当i=0时,db[0]=arr[0];
2.返回max(0,db[i-1])+arr[i];相当于,如果是负数,直接用零进行比较
上代码:
class Solution { public: /** * max sum of the subarray * @param arr int整型vector the array * @return int整型 */ int maxsumofSubarray(vector<int>& arr) { // write code here 定义一个大小与arr相同的数组dp, //其中db[i]的值代表到第i位的时候,以arr[i]结尾的连续子数组的最大累加和; int n=arr.size(); int db[n]; db[0]=arr[0]; int res=db[0]; for(int i=0;i<arr.size();i++) { db[i]=max(0,db[i-1])+arr[i]; res=max(res,db[i]); } return res; } };