算法-面试题系列 - 求数组左部分最大值减去右部分最大值的绝对值

如题所述

第1个回答  2022-07-09

给定一个数组arr长度为N,你可以把任意长度大于0且小于N的前缀作为左部分,剩下的作为右部分。

但是每种划分下都有左部分的最大值和右部分的最大值

请返回最大的, 左部分最大值减去右部分最大值的绝对值

算法流程

我们要求左边最大减去右边最大,max肯定是在左边数组和右边数组中的最后参与决策的最大数。

假设12在左边数组中,右边数组剩下[5,6,7]

因为把max放入了左边的数组,所以, 我们需要右边数组的最大值尽可能的小 ,数组个数越少,他的最大值就是尽可能的小,比如剩下[5,6,7]的情况,我们可以看到我们区arr[N-1]这个数作为右侧数组,是最满足 左部分最大值减去右部分最大值的绝对值 条件的。

同理 把max划分到右侧数组,左侧数组a[0]划分是最符合条件的。