File tree Expand file tree Collapse file tree 1 file changed +15
-14
lines changed Expand file tree Collapse file tree 1 file changed +15
-14
lines changed Original file line number Diff line number Diff line change 1
1
class Solution {
2
- fun maxCoins (nums : IntArray ): Int {
3
- val newNums = intArrayOf(1 ) + nums + intArrayOf(1 )
4
- val cache = Array (newNums.size){ IntArray (newNums.size) }
2
+ fun maxCoins (_nums : IntArray ): Int {
3
+ val nums = intArrayOf(1 ) + _nums + intArrayOf(1 )
4
+ val n = nums.size
5
+ val dp = Array (n) { IntArray (n) { - 1 } }
5
6
6
- fun dfs (left : Int , right : Int ): Int {
7
- if (left > right) return 0
8
- if (cache[left][right] != 0 ) return cache[left][right]
9
- for (i in left.. right){
10
- var coins = newNums[left- 1 ] * newNums[i] * newNums[right+ 1 ]
11
- coins = coins + dfs(left, i- 1 ) + dfs(i+ 1 , right)
12
- cache[left][right] = maxOf(cache[left][right], coins)
7
+ fun dfs (l : Int , r : Int ): Int {
8
+ if (l > r) return 0
9
+ if (dp[l][r] != - 1 ) return dp[l][r]
10
+
11
+ for (i in l.. r) {
12
+ var coins = nums[l - 1 ] * nums[i] * nums[r + 1 ]
13
+ coins + = dfs(l, i - 1 ) + dfs(i + 1 , r)
14
+ dp[l][r] = maxOf(dp[l][r], coins)
13
15
}
14
- return cache[left][right]
16
+
17
+ return dp[l][r]
15
18
}
16
19
17
- return dfs(1 , newNums.size- 2 )
18
-
20
+ return dfs(1 , n - 2 )
19
21
}
20
-
21
22
}
You can’t perform that action at this time.
0 commit comments