023_最大子序和

知识点:动态规划、分治(线段树)

LeetCode第五十三题:https://leetcode-cn.com/problems/maximum-subarray/solution/

下文只给出了DP的解法,简洁又清晰,分治的解法较为繁琐。

语言:GoLang

// DP思想解法:使用sum来保存当前节点之前的子序列和,时间复杂度O(n),空间O(1)
func maxSubArray(nums []int) int {
    ans, sum := nums[0], 0
    for _, value := range nums {
        if sum > 0 {
            sum += value
        }else {
            sum = value
        }
        ans = max(ans, sum)
    }
    return ans
}

func max(a int, b int) int {
    if a < b {
        return b
    }
    return a
}
posted @ 2020-03-17 19:57  Cenyol  阅读(53)  评论(0)    收藏  举报