比较经典的动态规划题目,空间优化成一维矩阵。
这个算法的时间复杂度是O(N^2)其中N为骰子数,空间复杂度是O(N)。
class Solution:
def twoSum(self, n: int) -> List[float]:
res = [0] * n * 6
for i in range(6):
res[i] = 1
for i in range(1, n):
for j in range((i+1)*6-1, i-1, -1):
if j >= 6:
res[j] = sum(res[j-6:j])
else:
res[j] = sum(res[:j])
for x in range(i):
res[x] = 0
s = sum(res[n-1:])
return [x / s for x in res[n-1:]]
PREVIOUSjz059II.队列的最大值
NEXTjz061.扑克排中的顺子