Minimum Cost Tree From Leaf Values LeetCode solution in Python
1# Runtime: 472 ms (Top 12.37%) | Memory: 14 MB (Top 32.41%)2class Solution:3def mctFromLeafValues(self, arr: List[int]) -> int:4n = len(arr)5d = {}67def findMax(start, end):8if (start, end) in d:9return d[(start, end)]10maxx = start11for i in range(start + 1, end + 1):12if arr[maxx] < arr[i]:13maxx = i14d[(start, end)] = arr[maxx]15return arr[maxx]1617dp = [[float("inf") for i in range(n)] for j in range(n)]18for gap in range(n):19for row in range(n - gap):20col = row + gap21if gap == 0:22dp[row][col] = 023elif gap == 1:24dp[row][col] = arr[row] * arr[col]25else:26for k in range(row, col):27val = (28dp[row][k]29+ findMax(row, k) * findMax(k + 1, col)30+ dp[k + 1][col]31)32if val < dp[row][col]:33dp[row][col] = val3435return dp[0][-1]