题目:原题链接(中等)
标签:动态规划
解法 | 时间复杂度 | 空间复杂度 | 执行用时 |
Ans 1 (Python) | O ( N ) | O ( N ) | 920ms (62.46%) |
Ans 2 (Python) | |||
Ans 3 (Python) |
解法一(动态规划):
class Solution:
def waysToChange(self, n: int) -> int:
# 处理1分硬币
dp = [[1] * (n + 1)] + [[0] * (n + 1) for _ in range(3)]
# 处理5分硬币
for i in range(n + 1):
dp[1][i] = dp[0][i] + (dp[1][i - 5] if i >= 5 else 0)
# 处理10分硬币
for i in range(n + 1):
dp[2][i] = dp[1][i] + (dp[2][i - 10] if i >= 10 else 0)
# 处理25分硬币
for i in range(n + 1):
dp[3][i] = dp[2][i] + (dp[3][i - 25] if i >= 25 else 0)
return dp[-1][-1] % 1000000007