华为机试复习--动态规划

NC19 子数组的最大累加和问题

题目描述
给定一个数组arr,返回子数组的最大累加和
例如,arr = [1, -2, 3, 5, -2, 6, -1],所有子数组中,[3, 5, -2, 6]可以累加出最大的和12,所以返回12.
题目保证没有全为负数的数据
[要求]
时间复杂度为O(n)O(n),空间复杂度为O(1)O(1)

示例1
输入
[1, -2, 3, 5, -2, 6, -1]
返回值
12
备注:

class Solution {
public:
    /**
     * max sum of the subarray
     * @param arr int整型vector the array
     * @return int整型
     */
    int maxsumofSubarray(vector<int>& arr) {
        // write code here
        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;
    }
};
posted @ 2021-03-24 17:00  Jorgensen  阅读(96)  评论(0编辑  收藏  举报
#site_nav_under { display: none; } .c_ad_block, .ad_text_commentbox { display: none; margin: 0; padding: 0; } #ad_under_google { height: 0; overflow: hidden; } #ad_under_google a { display: none; }