[leetcode 837][概率][滑动窗口][DP]新21点

[leetcode 837][概率][滑动窗口][DP]新21点
inkOrCloud题目链接
解题思路
该题目的就是求当爱丽丝到达k点后的所有可能中点数在[k,n]的概率
DP(超时)
设dp[i]表示从开始到点数i的概率,初始值dp[0] = 1,例如maxPts = 10, k = 5,那么dp[1] = 0.1, dp[2] = 0.11, dp[3] = 0.121
算出dp[1]到dp[k+maxPts-1](最高只能到达k+maxPts-1)后,结果就等于
1 | func new21Game(n int, k int, maxPts int) float64 { |
上述代码时间复杂度为
滑动窗口+DP
设dp[i]表示从i开始到达[k, n]的概率,例如k = 5, n = 7, dp[3]就表示从点数3开始到[k,n]的概率,从dp[k]开始反推(dp[n]到dp[k]概率都为1),dp[0]就是结果,dp[i]转移方程为
设滑动窗口长度固定左边界为i+1右边界为i+maxPts,那么滑动窗口内的值和就为
1 | func new21Game(n int, k int, maxPts int) float64 { |
上述代码时间复杂度为







![[leetcode 3171][备忘录][Go]关于LogTrick解法的个人理解](https://s3.inkorcloud.top/image/2025/10/3396d17ba0c1696cb78fb6e93d7d1d0b.png)
![[leetcode 3347][Go][答案二分]万能的二分法](https://s3.inkorcloud.top/image/2025/10/b92574e48ab8dfff1b32cc049a61df5f.png)
![[leetcode 2589][Go][贪心]完成所有任务的最少时间](https://s3.inkorcloud.top/image/2025/11/b966fd1a91aa1ea098b86e6d778523c2.png)
![[leetcode 3234][Go]统计1显著的字符串的数量](https://s3.inkorcloud.top/image/2025/11/a72a47911de291f51cbb5902e4811c1f.png)