最大子序列和(Go)

 

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

 

func maxSubArray(nums []int) int {
    if len(nums)==1{
        return nums[0]
    }
    dp := make([]int,len(nums))
    dp[0]=nums[0]     //边界
    for i:=1;i<len(nums);i++{
        if nums[i]+dp[i-1]>nums[i]{
            dp[i]=nums[i]+dp[i-1]   //递推关系式
        }else{
            dp[i]=nums[i]
        }
    }
    max:=dp[0]
    for i:=0;i<len(nums);i++{
        if dp[i]>max{
            max=dp[i]
        }
    }
    return max
}

  

posted @ 2021-02-26 15:21  布尔先生  阅读(157)  评论(0编辑  收藏  举报