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
	}
}

  

 

相关文章:

  • 2020-04-11
  • 2021-10-18
  • 2021-06-19
  • 2021-11-16
  • 2021-04-14
  • 2021-08-09
  • 2021-12-04
猜你喜欢
  • 2021-07-28
  • 2021-05-18
  • 2021-08-07
相关资源
相似解决方案