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
}

浙公网安备 33010602011771号