連續子數組的和的絕對值的最大值、最小值(非絕對值的話直接dp動態規划)


前綴和的思路:

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]絕對值最大。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM