文章目录

  • 1. 题目
  • 2. 解题

1. 题目

给你一个整数数组 nums 。
一个子数组 [numsl, numsl+1, ..., numsr-1, numsr] 的 和的绝对值 为 abs(numsl + numsl+1 + ... + numsr-1 + numsr)

请你找出 nums 中 和的绝对值 最大的任意子数组(可能为空),并返回该 最大值

abs(x) 定义如下:
如果 x 是负整数,那么 abs(x) = -x
如果 x 是非负整数,那么 abs(x) = x

示例 1:
输入:nums = [1,-3,2,3,-4]
输出:5
解释:子数组 [2,3] 和的绝对值最大,为 abs(2+3) = abs(5) = 5 。示例 2:
输入:nums = [2,-5,1,-4,3,-2]
输出:8
解释:子数组 [-5,1,-4] 和的绝对值最大,为 abs(-5+1-4) = abs(-8) = 8 。提示:
1 <= nums.length <= 10^5
-104 <= nums[i] <= 10^4

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/maximum-absolute-sum-of-any-subarray
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 计算 前缀和
  • 以每个位置结束,同时记录前面的最大,最小前缀和
class Solution {public:int maxAbsoluteSum(vector<int>& nums) {int ans = abs(nums[0]);vector<int> presum(nums);int n = nums.size();for(int i = 1; i < n; i++){presum[i] += presum[i-1];}int MIN = presum[0], MAX = presum[0];for(int i = 1; i < n; i++){int sum = presum[i];ans = max(ans, max(abs(sum), max(abs(sum-MIN), abs(sum-MAX))));MIN = min(MIN, sum);MAX = max(MAX, sum);}return ans;}
};

60 ms 41.9 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

LeetCode 1749. 任意子数组和的绝对值的最大值(前缀和)相关推荐

  1. LeetCode 1685. 有序数组中差绝对值之和(前缀和)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个 非递减 有序整数数组 nums . 请你建立并返回一个整数数组 result,它跟 nums 长度相同,且result[i] 等于 nums[i ...

  2. LeetCode 任意子数组和绝对值的最大值(JavaScript)

    这道题目,我是通过看题解,然后通过自己思考才写出来的,第一次写博客,如果有不好之处,请谅解. 写这个题目之前,我们先了解一下前缀和,通过下面例子,或许你就明白了什么是前缀和了. 假设我们有一个数组 n ...

  3. LeetCode 2035. 将数组分成两个数组并最小化数组和的差

    文章目录 一.题目 1.题目描述 2.基础框架 3.原题链接 二.解题报告 1.思路分析 2.算法详解 3.时间复杂度 4.代码详解 三.本题小知识 四.加群须知 一.题目 1.题目描述   给你一个 ...

  4. Leetcode1685. 有序数组中差绝对值之和[C++题解]:前缀和和差的绝对值之和

    文章目录 题目分析 题目链接 题目分析 分析: 货仓选址同类型题目. 差的绝对值求和,分两半,前面的都小于等于它,后面的都大于等于它. 另外需要注意 前缀和的技巧.O(1)时间求区间之和. 总的时间复 ...

  5. leetcode 387 C++数组做法

    leetcode 387 C++数组做法 class Solution {public:int firstUniqChar(string s) {int n=s.length();if(n==0) r ...

  6. LeetCode 410. 分割数组的最大值(极小极大化 二分查找 / DP)

    文章目录 1. 题目 2. 解题 2.1 二分查找 2.2 DP 1. 题目 给定一个非负整数数组和一个整数 m,你需要将这个数组分成 m 个非空的连续子数组. 设计一个算法使得这 m 个子数组各自和 ...

  7. LeetCode 525. 连续数组(前缀和+哈希)

    1. 题目 给定一个二进制数组, 找到含有相同数量的 0 和 1 的最长连续子数组(的长度). 示例 1: 输入: [0,1] 输出: 2 说明: [0, 1] 是具有相同数量0和1的最长连续子数组. ...

  8. leetcode 410. 分割数组的最大值(二分法)

    1. 题目描述 给定一个非负整数数组和一个整数 m,你需要将这个数组分成 m 个非空的连续子数组.设计一个算法使得这 m 个子数组各自和的最大值最小.注意: 数组长度 n 满足以下条件:1 ≤ n ≤ ...

  9. Leetcode 1043.分隔数组以达到最大和

    Time: 20190907 Type: Medium 题目描述 出整数数组 A,将该数组分隔为长度最多为 K 的几个(连续)子数组.分隔完成后,每个子数组的中的值都会变为该子数组中的最大值. 返回给 ...

最新文章

  1. linux内核map图
  2. 【DIY】热水器升级加装远程wifi控制功能,esp8266远程红外控制热水器启动,新增自动定时烧水断电需求整理...
  3. python linux服务_Python脚本作为Linux服务/守护程序
  4. 激光雷达和毫米波雷达的区别
  5. python数据可视化的特点_6 种 Python 数据可视化工具
  6. 程序员30岁之前如何月入五万
  7. 在ubuntu上安装Oracle Java SDK
  8. echart 不立即更新 解决首次加载动画问题 vue watch immediate
  9. JavaScript:手写JSONP
  10. 线性表的链式存储结构-----链表
  11. spring事务失效一:非public方法
  12. java exception 级别_Java异常体系概述
  13. 中国石油大学《马克思主义基本原理》第三阶段在线作业
  14. 计算机硬盘根目录是什么,解决方案:硬盘根目录是什么意思?它存储在哪里?...
  15. 用Jupyter—Notebook爬取网页数据实例1
  16. 计算机经常断开网络,当笔记本电脑经常自动断开网络连接时如何解决问题
  17. js重点基础学习笔记
  18. php获取图片rgb值,判断图片是否纯黑纯白
  19. Java编程规范-文件组织与排版
  20. 认识越南语的发音体系

热门文章

  1. Django Rest framework Request
  2. python变量和常量_python变量与常量内容:
  3. 选择排序 冒泡排序 二分查找
  4. mysql对表中添加属性_菜鸟笔记—数据分析师MySQL篇(一)
  5. 第二季4:HI_S32 SAMPLE_VENC_1080P_CLASSIC(HI_VOID)函数的分析
  6. s5pv210——SDRAM的初始化
  7. C++远航之封装篇——默认构造函数、初始化列表、拷贝构造函数
  8. YAML/Properties配置文件与Spring Boot(转)
  9. [haoi2011]防线修建
  10. spring AOP自定义注解方式实现日志管理