diff --git a/solution/0800-0899/0837.New 21 Game/README.md b/solution/0800-0899/0837.New 21 Game/README.md index e32792c2d6a8a..ccf21360bc3ac 100644 --- a/solution/0800-0899/0837.New 21 Game/README.md +++ b/solution/0800-0899/0837.New 21 Game/README.md @@ -65,6 +65,23 @@ ``` +### **TypeScript** + +```ts +function new21Game(n: number, k: number, maxPts: number): number { + if (!k) return 1.0; + let dp = new Array(k + maxPts).fill(0.0); + for (let i = k; i <= n && i < k + maxPts; i++) { + dp[i] = 1.0; + } + dp[k - 1] = 1.0 * Math.min(n - k + 1, maxPts) / maxPts; + for (let i = k - 2; i >= 0; i--) { + dp[i] = dp[i + 1] - (dp[i + maxPts + 1] - dp[i + 1]) / maxPts; + } + return dp[0]; +}; +``` + ### **...** ``` diff --git a/solution/0800-0899/0837.New 21 Game/README_EN.md b/solution/0800-0899/0837.New 21 Game/README_EN.md index f56e580a2da31..97703c9673904 100644 --- a/solution/0800-0899/0837.New 21 Game/README_EN.md +++ b/solution/0800-0899/0837.New 21 Game/README_EN.md @@ -69,6 +69,23 @@ In 6 out of W = 10 possibilities, she is at or below N = 6 points. ``` +### **TypeScript** + +```ts +function new21Game(n: number, k: number, maxPts: number): number { + if (!k) return 1.0; + let dp = new Array(k + maxPts).fill(0.0); + for (let i = k; i <= n && i < k + maxPts; i++) { + dp[i] = 1.0; + } + dp[k - 1] = 1.0 * Math.min(n - k + 1, maxPts) / maxPts; + for (let i = k - 2; i >= 0; i--) { + dp[i] = dp[i + 1] - (dp[i + maxPts + 1] - dp[i + 1]) / maxPts; + } + return dp[0]; +}; +``` + ### **...** ``` diff --git a/solution/0800-0899/0837.New 21 Game/Solution.ts b/solution/0800-0899/0837.New 21 Game/Solution.ts new file mode 100644 index 0000000000000..fee1989bf3da1 --- /dev/null +++ b/solution/0800-0899/0837.New 21 Game/Solution.ts @@ -0,0 +1,12 @@ +function new21Game(n: number, k: number, maxPts: number): number { + if (!k) return 1.0; + let dp = new Array(k + maxPts).fill(0.0); + for (let i = k; i <= n && i < k + maxPts; i++) { + dp[i] = 1.0; + } + dp[k - 1] = 1.0 * Math.min(n - k + 1, maxPts) / maxPts; + for (let i = k - 2; i >= 0; i--) { + dp[i] = dp[i + 1] - (dp[i + maxPts + 1] - dp[i + 1]) / maxPts; + } + return dp[0]; +}; \ No newline at end of file