文章目录
- 题目描述
- 题解思路
- 题解代码
- 题解链接
题目描述
题解思路
这个我只需要求子数组和的最小值相反数和子数组和的最大值,本题答案为二者的最大值
设数组maxDp中第i号元素表示以nums[i]为结尾的子数组和的最大值
设数组minDp中第i号元素表示以nums[i]为结尾的子数组和的最小值
其中maxDp[i] = max(maxDp[i - 1], 0) + nums[i]
其中minDp[i] = min(minDp[i - 1], 0) + nums[i]
题解代码
func maxAbsoluteSum(nums []int) int {
n := len(nums)
// maxSum表示以i - 1结尾的子数组的最大和,minSum表示以i - 1结尾的子数组的最小和
maxSum, minSum := 0, 0
// maxAns表示最大子数组和,minAns表示最小子数组和
maxAns, minAns := 0, 0
for i := 0; i < n; i++ {
maxSum = max(maxSum, 0) + nums[i]
minSum = min(minSum, 0) + nums[i]
maxAns = max(maxAns, maxSum)
minAns = min(minAns, minSum)
}
return max(maxAns, -minAns)
}
题解链接
https://leetcode.cn/problems/maximum-absolute-sum-of-any-subarray/