From 88dc0264be256810fe7ef0648b7c3d3dcfc7aa6a Mon Sep 17 00:00:00 2001 From: kr0st Date: Sun, 16 Oct 2022 18:53:57 +0300 Subject: [PATCH] "837. New 21 Game" medium, accepted solution. --- 837-new-21-game.go | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/837-new-21-game.go b/837-new-21-game.go index 8f65ecf..0c51c34 100644 --- a/837-new-21-game.go +++ b/837-new-21-game.go @@ -394,18 +394,25 @@ func New21Game(n int, k int, maxPts int) float64 { return 1 } - p := make([]float64, n+1) + if n >= k+maxPts { + return 1 + } + + p := make([]float64, k+maxPts) m := float64(maxPts) p[0] = 1 - p[1] = p[0] / m + sum := 1.0 - for i := 2; i <= k; i++ { - p[i] = p[i-1] + p[i-1]/m - } - - for i := k + 1; i <= n; i++ { - p[i] = p[i-1] + p[i-1]/m - p[i-k] + for i := 1; i <= n; i++ { + p[i] = sum / m + sum += p[i] + if i-maxPts >= 0 { + sum -= p[i-maxPts] + } + if i >= k { + sum -= p[i] + } } sumP := float64(0)