wuyijia

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

代码随想录算法训练营-动态规划-1|509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯

509. 斐波那契数
 
复制代码
 1 class Solution:
 2     def fib(self, n: int) -> int:
 3         if n <= 2:
 4             return n
 5 
 6         prev1, prev2 = 0, 1
 7         for _ in range(2, n+1):
 8             sum_value = prev1 + prev2
 9             prev1, prev2 = prev2, sum_value
10         
11         return prev2
复制代码

70. 爬楼梯

复制代码
 1 class Solution:
 2     def climbStairs(self, n: int) -> int:
 3         if n <= 1:
 4             return n
 5         
 6         prev1, prev2 = 1, 2
 7         
 8         for _ in range(3, n + 1):
 9             curr = prev1 + prev2
10             prev1, prev2 = prev2, curr
11         
12         return prev2
复制代码

 746. 使用最小花费爬楼梯

复制代码
 1 class Solution:
 2     def minCostClimbingStairs(self, cost: List[int]) -> int:
 3         dp0 = 0  # 初始值,表示从起点开始不需要花费体力
 4         dp1 = 0  # 初始值,表示经过第一步不需要花费体力
 5         
 6         for i in range(2, len(cost) + 1):
 7             # 在第i步,可以选择从前一步(i-1)花费体力到达当前步,或者从前两步(i-2)花费体力到达当前步
 8             # 选择其中花费体力较小的路径,加上当前步的花费,得到当前步的最小花费
 9             dpi = min(dp1 + cost[i - 1], dp0 + cost[i - 2])
10             
11             dp0 = dp1  # 更新dp0为前一步的值,即上一次循环中的dp1
12             dp1 = dpi  # 更新dp1为当前步的最小花费
13         
14         return dp1  # 返回到达楼顶的最小花费
复制代码

 

 

posted on   小吴要努力  阅读(6)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示