前綴和的思路:
sum[i] = num[0]+num[1]+......+num[i-1]
sum[j] = num[0]+num[1]+......+num[j-1]
那么:num[i]+num[i+1]+....num[j] = sum[j+1] - sum[i]
所以求連續子數組絕對值的最大最小,即可轉化為求前綴和排序的差值的絕對值。
例如: -2 1 -3 4 -1 2 1 sum數組:-2 -1 -4 0 -1 1 2 》 -4 -2 -1 -1 0 1 2
1、最小值:可能是0,如果前綴和中有0值,那么直接返回0;否則,前綴和絕對值最小值可能有兩種情況.
@1: sum前綴和數組排序后相鄰的差值絕對值最小的。
@2: 或者sum[i]最小。
2、最大值:前綴和絕對值最大有兩種情況
@1: sum前綴和數組排序后sum[i]-sum[0]絕對值最大。
@2: sum[i]絕對值最大。