看了前面的解答,都有问题,自测调试用示例1的输入输出都通过不了。我的想法是:
总的来说,解题思路就是从前往后推,要保证每个位置的值都起码比原本的大。注意每次都要用m保存当前时刻的最大累积和,最后直接返回就ok。
class Solution { public: int maxsumofSubarray(vector<int>& arr) { int m = arr[0]; // 保存最大累加和 for(int i = 1 ; i<arr.size() ; i++) { arr[i] = max(arr[i] , arr[i-1]+arr[i]); m = max(m, arr[i]); } return m; } };