左右最值最大差
给定一个长度为N(N>1)的整型数组A,可以将A划分成左右两个部分,左部分A[0..K],右部分A[K+1..N-1],K可以取值的范围是[0,N-2]。求这么多划分方案中,左部分中的最大值减去右部分最大值的绝对值,最大是多少?
给定整数数组A和数组的大小n,请返回题目所求的答案。
测试样例:
[2,7,3,1,1],5
返回:6
分析:
不管从哪分隔,其中有一部分的最大值肯定是整个数组的最大值max,而要是两部分差值最大,就要使不包含max的那部分最大值最小。首先,找到数组中的最大值max。
我们来分析一下max的位置会对结果造成什么影响:
- 当max在索引为0的位置,此时不管从哪里分隔,左部分的最大数值一定为max,而右部分一定包含A[n-1],当A[n-1]为最小值时,我们肯定是在A[n-1]的前面分隔,保证A[n-1]是右部分最大值,使得如【7,3,1】,在1前面分隔,此时最大差值为max-A[n-1]。
- 当max在索引为n-1的位置,同理,最大差值为max-A[0]。
- 如果max在中甲的位置,那我们就取max-A[0]、max-A[n-1]的最大差值