837. New 21 Game

Difficulty:
Related Topics:
Similar Questions:

    Problem

    Alice plays the following game, loosely based on the card game "21".

    Alice starts with 0 points and draws numbers while she has less than k points. During each draw, she gains an integer number of points randomly from the range [1, maxPts], where maxPts is an integer. Each draw is independent and the outcomes have equal probabilities.

    Alice stops drawing numbers when she gets k or more points.

    Return the probability that Alice has n or fewer points.

    Answers within 10-5 of the actual answer are considered accepted.

      Example 1:

    Input: n = 10, k = 1, maxPts = 10
    Output: 1.00000
    Explanation: Alice gets a single card, then stops.
    

    Example 2:

    Input: n = 6, k = 1, maxPts = 10
    Output: 0.60000
    Explanation: Alice gets a single card, then stops.
    In 6 out of 10 possibilities, she is at or below 6 points.
    

    Example 3:

    Input: n = 21, k = 17, maxPts = 10
    Output: 0.73278
    

      Constraints:

    Solution (Java)

    class Solution {
        public double new21Game(int n, int k, int w) {
            if (n >= k + w || k == 0) {
                return 1.0;
            }
            double[] dp = new double[n + 1];
            dp[0] = 1.0;
            double res = 0.0;
            double runningSum = dp[0];
            for (int i = 1; i <= n; i++) {
                dp[i] = runningSum / w;
                if (i < k) {
                    runningSum += dp[i];
                } else {
                    res += dp[i];
                }
                if (i - w >= 0) {
                    runningSum -= dp[i - w];
                }
            }
            return res;
        }
    }
    

    Explain:

    nope.

    Complexity: