描述

输入一个长度为 n 的整型数组 array,数组中的一个或连续多个整数组成一个子数组,子数组最小长度为1。求所有子数组的和的最大值。

数据范围:

  • 1<=n<=2×105
  • −100<=a[i]<=100

要求:时间复杂度为 O(n),空间复杂度为 O(n)

进阶:时间复杂度为 O(n),空间复杂度为 O(1)

示例
// 输入
[1,-2,3,10,-4,7,2,-5]
// 输出:输入数组的子数组[3,10,-4,7,2]可以求得最大和为18
18

// 输入
[2]
// 输出
2

// 输入
[-10]
// 输出
10
解题思路

动态规划

代码实现
/**
 * [JZ44-简单] 数字序列中某一位的数字
 *
 * @param array int 一维数组
 * @return int
 */
func findGreatestSumOfSubArray(array []int) int {
    length := len(array)
    if 1 == length {
        return array[0]
    }

    dp := make([]int, length)
    dp[0] = array[0]
    max := array[0]
    for i := 1; i < length; i++ {
        dp[i] = int(math.Max(float64(dp[i-1]+array[i]), float64(array[i])))
        max = int(math.Max(float64(dp[i]), float64(max)))
    }
    return max
}

本文由 一切随风 创作,可自由转载、引用,但需署名作者且注明文章出处。

10 条评论

  1. jvkfznxnui
    jvkfznxnui

    盲女惊魂记

  2. uebwkfnoih
    uebwkfnoih

    哨兵

  3. wbuvcwdzsh
    wbuvcwdzsh

    长生不死硅谷富豪的逆龄人生

  4. qdboadeqji
    qdboadeqji

    候燕

  5. lpegdisysh
    lpegdisysh

    藏凶者

  6. prdhfnuvzd
    prdhfnuvzd

    亚洲犯罪网

  7. qknwwvrxum
    qknwwvrxum

    你往哪里跑

  8. mjgarrmsos
    mjgarrmsos

    文章紧扣主题,观点鲜明,展现出深刻的思考维度。

  9. xxhhbccthu
    xxhhbccthu

    哈哈哈,写的太好了https://www.lawjida.com/

  10. ucqutsqcoz
    ucqutsqcoz

    你的文章让我学到了很多知识,非常感谢。 https://www.yonboz.com/video/61941.html

添加新评论