美文网首页
动态规划之最大子序列

动态规划之最大子序列

作者: wwq2020 | 来源:发表于2020-07-26 21:15 被阅读0次

题目

给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

思路

在索引是n位置的最大总和是 n-1处总和加n位置值 以及n位置值 两者的最大值

状态转移方程

dp[n] = max(dp[n-1] + num[n])

最终代码

func calc(nums []int) int {
    if len(nums) < 1 {
        return 0
    }
    dp := make([]int, len(nums))
    result := nums[0]
    dp[0] = nums[0]
    for i := 1; i < len(nums); i++ {
        dp[i] = max(dp[i-1]+nums[i], nums[i])
        result = max(dp[i], result)
    }
    return result
}

func max(a, b int) int {
    if a > b {
        return a
    }
    return b
}

相关文章

网友评论

      本文标题:动态规划之最大子序列

      本文链接:https://www.haomeiwen.com/subject/rjpglktx.html