AlgoMooc
你已开通华为OD训练营权益,还差最后一步——完成入营激活(兑换课程 + 加飞书 + 登记服务群),即可解锁全部课程与专属服务。去激活 →
← 返回题库

P4201. 分割数组的最大差值

简单通过率 78% · 提交 370 · 通过 287
前缀和枚举

小慕正在处理一个由若干整数组成的数组nums,他可以在数组内的任意位置进行分割,将该数组分割成两个(即左数组和右数组),分别对子数组求和得到两个值,并计算这两个值的差值。小慕想要知道,在所有可能的分割方案中,差值的最大值是多少。

提示:带虚线的词点一下有通俗解释。

输入描述

<p> 第一行输入数组中元素个数n,1 < n <= 100000 </p> <p> 第二行输入数字序列,以空格进行分隔,数字取值为4字节整数 </p>

输出描述

输出差值的最大取值

示例

示例 1

输入

6
1 -2 3 4 -9 7

输出

10

说明:将数组nums 划分为两个非空数组的可行方案有: 左数组 = [1] 且 右数组 = [-2, 3, 4, -9, 7],和的差值 = |1 - 3|=2 左数组 = [1, -2] 且 右数组 = [3, 4, -9, 7],和的差值 = |-1 - 5|=6 左数组 = [1, -2, 3, 1] 且 右数组 = [4, -9, 7],和的差值 = |2 - 2|=0 左数组 = [1, -2, 3, 4] 且 右数组 = [-9, 7],和的差值 = |6 - (-2)| = 8 左数组 = [1, -2, 3, 4, -9] 且 右数组 = [7],和的差值 = |-3 - 7| = 10 最大的差值为10

时间限制 1000 ms · 内存限制 128 MB

看不懂题目?点开图解
分割数组求最大差值(示例) 原数组: 1 -2 3 4 -9 7 分割点1: 1 -2 3 4 -9 7 左和=1 右和=3 差值=|1-3|=2 分割点5: 1 -2 3 4 -9 7 左和=-3 右和=7 差值=|-3-7|=10 最大差值为 10 提示:用前缀和快速计算左右和,遍历所有分割点取最大差值
写完代码点「提交」,将对全部测试用例判题。

向老师提问

针对「分割数组的最大差值」把疑问、代码和报错填清楚,老师收到后能更快、更准地回复你。