Partition Array for Maximum Sum
Input:
A =
[1,15,7,9,2,5,10]
, K =
3
Output:
84
Explanation
: A becomes [15,15,15,9,10,10,10]Note:
1 <= K <= A.length <= 500
0 <= A[i] <= 10^6class Solution:
def maxSumAfterPartitioning(self, A: List[int], K: int) -> int:
n = len(A)
dp = [0]*(n+1)
for i in range(1,n+1):
dp[i] = dp[i-1] + A[i-1]
j = i-1
mx = A[i-1]
while j >0 and i - j < K:
mx = max(mx,A[j-1])
dp[i] = max(dp[i],dp[j-1] + mx*(i-j+1)) #mx不能合在这里算,不知道为什么
j-=1
return dp[-1]Last updated