首页 > 其他 > 详细

1. 线性DP

时间:2020-04-20 16:23:01      阅读:50      评论:0      收藏:0      [点我收藏+]

53. 最大子序和https://leetcode-cn.com/problems/maximum-subarray/

func maxSubArray(nums []int) int {
	dp := make([]int,len(nums))
	dp[0] = nums[0]
	for i:=1;i<len(nums);i++{
		dp[i] = MAX(dp[i-1],0)+nums[i]
	}
	res := nums[0]
	for i:=1;i<len(nums);i++{
		res = MAX(res,dp[i])
	}
	return res
}

func MAX(i,j int) int{
	if i>j{
		return i
	}else{
		return j
	}
}

 

下面优化:使用常量空间复杂度O(1)

  

func maxSubArray(nums []int) int {
	pre,res := nums[0],nums[0]
	for i:=1;i<len(nums);i++{
		cur := MAX(pre,0)+nums[i]
        pre = cur
        if cur > res{
            res = cur
        }
	}
	return res
}

func MAX(i,j int) int{
	if i>j{
		return i
	}else{
		return j
	}
}

  

 

1. 线性DP

原文:https://www.cnblogs.com/wsw-seu/p/12738489.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!