Minimum Total Space Wasted With K Resizing Operations LeetCode solution in Python
1class Solution:2def minSpaceWastedKResizing(self, A: List[int], K: int) -> int:3def waste(i, j, h):4sumI = sums[i - 1] if i > 0 else 05return (j - i + 1) * h - sums[j] + sumI67def dp(i, k):8if i <= k:9return 010if k < 0:11return MAX12if (i, k) in memoize:13return memoize[(i, k)]1415_max = A[i]16r = MAX17for j in range(i - 1, -2, -1):18r = min(r, dp(j, k - 1) + waste(j + 1, i, _max))19_max = max(_max, A[j])2021memoize[(i, k)] = r22return r2324sums = list(accumulate(A))25n = len(A)26MAX = 10**6 * 20027memoize = {}2829return dp(n - 1, K)