LeetCode讲解篇之1749. 任意子数组和的绝对值的最大值

文章目录

题目描述

题解思路

这个我只需要求子数组和的最小值相反数和子数组和的最大值,本题答案为二者的最大值

设数组maxDp中第i号元素表示以numsi为结尾的子数组和的最大值

设数组minDp中第i号元素表示以numsi为结尾的子数组和的最小值

其中maxDpi = max(maxDpi - 1, 0) + numsi

其中minDpi = min(minDpi - 1, 0) + numsi

题解代码

go 复制代码
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/

相关推荐
海绵宝宝转agent12 小时前
JUC高频面试八股总结个人开源
面试·职场和发展
Nil20813 小时前
leetcode 118杨辉三角
算法·leetcode·职场和发展
wanderist.15 小时前
线性筛法详解:从筛质数到欧拉函数、Möbius 函数与约数函数
java·数据结构·算法
All for pursuit.15 小时前
【设计-1】208.实现Trie (前缀树)
数据结构·c++·算法·leetcode
weixin_3077791315 小时前
C++代码实现MATLAB中的crossval函数功能
开发语言·c++·算法·matlab
ttwuai15 小时前
Go后台管理系统开源项目:4个官方仓库怎么追溯和核验
开发语言·golang·开源
谢亮_vipxieliang15 小时前
Go Worker Pool 设计——从原理到生产级实现
开发语言·后端·golang
青少儿编程课堂15 小时前
背包问题(0/1 背包与完全背包)解题精讲——动态规划入门
c++·python·算法·bfs·信息学竞赛
光影少年16 小时前
为什么 JavaScript 中 0.1 + 0.2 !== 0.3,如何让其相等?
前端·javascript·算法
HEJOO916 小时前
Linux 设备驱动系列——使用全局工作队列
java·linux·算法