Skip to content

Commit 1583dc8

Browse files
committed
Runtime: 3739 ms (Top 77.47%) | Memory: 34.10 MB (Top 46.9%)
1 parent 6ffbce2 commit 1583dc8

File tree

1 file changed

+8
-15
lines changed

1 file changed

+8
-15
lines changed
Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,11 @@
1-
from functools import cache
1+
// Runtime: 3739 ms (Top 77.47%) | Memory: 34.10 MB (Top 46.9%)
22

33
class Solution:
4-
def maxCoins(self, nums: List[int]) -> int:
5-
nums = [1] + nums + [1]
6-
length = len(nums)
7-
dp = [[None]*(length+1) for i in range(length+1)]
4+
def maxCoins(self, nums):
5+
A = [1] + nums + [1]
86

9-
@cache
10-
def dfs(l,r):
11-
if l>r: return 0
12-
if dp[l][r] is not None: return dp[l][r]
13-
dp[l][r] = 0
14-
for i in range(l,r+1):
15-
coins = dfs(l, i-1) + dfs(i+1, r) + nums[l-1]*nums[i]*nums[r+1]
16-
dp[l][r] = max(dp[l][r], coins)
17-
return dp[l][r]
18-
return dfs(1, length-2)
7+
@lru_cache(None)
8+
def dfs(i, j):
9+
return max([A[i]*A[k]*A[j] + dfs(i,k) + dfs(k,j) for k in range(i+1, j)] or [0])
10+
11+
return dfs(0, len(A) - 1)

0 commit comments

Comments
 (0)