[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 3321][Go][有序集合]计算子数组的 x-sum II](https://s3.inkorcloud.top/image/2025/11/c9f55b2ecb04d16a57547b9f4de294ef.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)
![[leetcode 1611][Go][位运算][记忆化搜索]使整数变为 0 的最少操作次数](https://s3.inkorcloud.top/image/2025/11/9715b5f3d8a7574ded3648767538558e.png)
![[leetcode 2528][Go][二分答案][差分数组][前缀和]最大化城市的最小电量](https://s3.inkorcloud.top/image/2025/11/fa0013722d9361b4383839722394dcf2.png)