最大子数组和
// 标准动态规划
func maxSubArray(nums []int) int {
if len(nums) == 0 {
return 0
}
dp := make([]int, len(nums))
dp[0] = nums[0]
maxSum := nums[0]
for i:= 1 ; i < len(nums) ; i++ {
dp[i] = max(nums[i] + dp[i-1], nums[i])
maxSum = max(maxSum, dp[i])
}
return maxSum
}
func max(x ,y int) int {
if x > y {
return x
}
return y
}
// 内存优化
func maxSubArray(nums []int) int {
if len(nums) == 0 {
return 0
}
maxSum := nums[0]
sum := nums[0]
for i:= 1 ; i < len(nums) ; i++ {
sum = max(nums[i]+sum, nums[i])
maxSum = max(maxSum, sum)
}
return maxSum
}Last updated
Was this helpful?