LeetCode 1749. 任意子数组和的绝对值的最大值(前缀和)
文章目录
- 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. 任意子数组和的绝对值的最大值(前缀和)相关推荐
- LeetCode 1685. 有序数组中差绝对值之和(前缀和)
文章目录 1. 题目 2. 解题 1. 题目 给你一个 非递减 有序整数数组 nums . 请你建立并返回一个整数数组 result,它跟 nums 长度相同,且result[i] 等于 nums[i ...
- LeetCode 任意子数组和绝对值的最大值(JavaScript)
这道题目,我是通过看题解,然后通过自己思考才写出来的,第一次写博客,如果有不好之处,请谅解. 写这个题目之前,我们先了解一下前缀和,通过下面例子,或许你就明白了什么是前缀和了. 假设我们有一个数组 n ...
- LeetCode 2035. 将数组分成两个数组并最小化数组和的差
文章目录 一.题目 1.题目描述 2.基础框架 3.原题链接 二.解题报告 1.思路分析 2.算法详解 3.时间复杂度 4.代码详解 三.本题小知识 四.加群须知 一.题目 1.题目描述 给你一个 ...
- Leetcode1685. 有序数组中差绝对值之和[C++题解]:前缀和和差的绝对值之和
文章目录 题目分析 题目链接 题目分析 分析: 货仓选址同类型题目. 差的绝对值求和,分两半,前面的都小于等于它,后面的都大于等于它. 另外需要注意 前缀和的技巧.O(1)时间求区间之和. 总的时间复 ...
- leetcode 387 C++数组做法
leetcode 387 C++数组做法 class Solution {public:int firstUniqChar(string s) {int n=s.length();if(n==0) r ...
- LeetCode 410. 分割数组的最大值(极小极大化 二分查找 / DP)
文章目录 1. 题目 2. 解题 2.1 二分查找 2.2 DP 1. 题目 给定一个非负整数数组和一个整数 m,你需要将这个数组分成 m 个非空的连续子数组. 设计一个算法使得这 m 个子数组各自和 ...
- LeetCode 525. 连续数组(前缀和+哈希)
1. 题目 给定一个二进制数组, 找到含有相同数量的 0 和 1 的最长连续子数组(的长度). 示例 1: 输入: [0,1] 输出: 2 说明: [0, 1] 是具有相同数量0和1的最长连续子数组. ...
- leetcode 410. 分割数组的最大值(二分法)
1. 题目描述 给定一个非负整数数组和一个整数 m,你需要将这个数组分成 m 个非空的连续子数组.设计一个算法使得这 m 个子数组各自和的最大值最小.注意: 数组长度 n 满足以下条件:1 ≤ n ≤ ...
- Leetcode 1043.分隔数组以达到最大和
Time: 20190907 Type: Medium 题目描述 出整数数组 A,将该数组分隔为长度最多为 K 的几个(连续)子数组.分隔完成后,每个子数组的中的值都会变为该子数组中的最大值. 返回给 ...
最新文章
- linux内核map图
- 【DIY】热水器升级加装远程wifi控制功能,esp8266远程红外控制热水器启动,新增自动定时烧水断电需求整理...
- python linux服务_Python脚本作为Linux服务/守护程序
- 激光雷达和毫米波雷达的区别
- python数据可视化的特点_6 种 Python 数据可视化工具
- 程序员30岁之前如何月入五万
- 在ubuntu上安装Oracle Java SDK
- echart 不立即更新 解决首次加载动画问题 vue watch immediate
- JavaScript:手写JSONP
- 线性表的链式存储结构-----链表
- spring事务失效一:非public方法
- java exception 级别_Java异常体系概述
- 中国石油大学《马克思主义基本原理》第三阶段在线作业
- 计算机硬盘根目录是什么,解决方案:硬盘根目录是什么意思?它存储在哪里?...
- 用Jupyter—Notebook爬取网页数据实例1
- 计算机经常断开网络,当笔记本电脑经常自动断开网络连接时如何解决问题
- js重点基础学习笔记
- php获取图片rgb值,判断图片是否纯黑纯白
- Java编程规范-文件组织与排版
- 认识越南语的发音体系
热门文章
- Django Rest framework Request
- python变量和常量_python变量与常量内容:
- 选择排序 冒泡排序 二分查找
- mysql对表中添加属性_菜鸟笔记—数据分析师MySQL篇(一)
- 第二季4:HI_S32 SAMPLE_VENC_1080P_CLASSIC(HI_VOID)函数的分析
- s5pv210——SDRAM的初始化
- C++远航之封装篇——默认构造函数、初始化列表、拷贝构造函数
- YAML/Properties配置文件与Spring Boot(转)
- [haoi2011]防线修建
- spring AOP自定义注解方式实现日志管理