diff --git a/solution/0300-0399/0312.Burst Balloons/README.md b/solution/0300-0399/0312.Burst Balloons/README.md index 8737f293461cf..36d0ac432c2b1 100644 --- a/solution/0300-0399/0312.Burst Balloons/README.md +++ b/solution/0300-0399/0312.Burst Balloons/README.md @@ -96,6 +96,25 @@ class Solution { } ``` +### **TypeScript** + +```ts +function maxCoins(nums: number[]): number { + let n = nums.length; + let dp = Array.from({ length: n + 1 }, v => new Array(n + 2).fill(0)); + nums.unshift(1); + nums.push(1); + for (let i = n - 1; i >= 0; --i) { + for (let j = i + 2; j < n + 2; ++j) { + for (let k = i + 1; k < j; ++k) { + dp[i][j] = Math.max(nums[i] * nums[k] * nums[j] + dp[i][k] + dp[k][j], dp[i][j]); + } + } + } + return dp[0][n + 1]; +}; +``` + ### **C++** ```cpp diff --git a/solution/0300-0399/0312.Burst Balloons/README_EN.md b/solution/0300-0399/0312.Burst Balloons/README_EN.md index 13c6bafa263e0..9b3e892b1418a 100644 --- a/solution/0300-0399/0312.Burst Balloons/README_EN.md +++ b/solution/0300-0399/0312.Burst Balloons/README_EN.md @@ -80,6 +80,25 @@ class Solution { } ``` +### **TypeScript** + +```ts +function maxCoins(nums: number[]): number { + let n = nums.length; + let dp = Array.from({ length: n + 1 }, v => new Array(n + 2).fill(0)); + nums.unshift(1); + nums.push(1); + for (let i = n - 1; i >= 0; --i) { + for (let j = i + 2; j < n + 2; ++j) { + for (let k = i + 1; k < j; ++k) { + dp[i][j] = Math.max(nums[i] * nums[k] * nums[j] + dp[i][k] + dp[k][j], dp[i][j]); + } + } + } + return dp[0][n + 1]; +}; +``` + ### **C++** ```cpp diff --git a/solution/0300-0399/0312.Burst Balloons/Solution.ts b/solution/0300-0399/0312.Burst Balloons/Solution.ts new file mode 100644 index 0000000000000..197124f6ddecc --- /dev/null +++ b/solution/0300-0399/0312.Burst Balloons/Solution.ts @@ -0,0 +1,14 @@ +function maxCoins(nums: number[]): number { + let n = nums.length; + let dp = Array.from({ length: n + 1 }, v => new Array(n + 2).fill(0)); + nums.unshift(1); + nums.push(1); + for (let i = n - 1; i >= 0; --i) { + for (let j = i + 2; j < n + 2; ++j) { + for (let k = i + 1; k < j; ++k) { + dp[i][j] = Math.max(nums[i] * nums[k] * nums[j] + dp[i][k] + dp[k][j], dp[i][j]); + } + } + } + return dp[0][n + 1]; +}; \ No newline at end of file