代码随想录算法训练营第三十八天
509. 斐波那契数
代码
# !/usr/bin/env python
# -*- coding:utf-8 -*-
# @Time : 2022.12
# @Author : hello algorithm!
# @Note : https://leetcode.cn/problems/fibonacci-number/
class Solution:
def fib(self, n: int) -> int:
if n == 0:
return 0
if n == 1:
return 1
f0 = 0
f1 = 1
result = 0
for i in range(2, n + 1):
result = f0 + f1
f0 = f1
f1 = result
return result
if __name__ == '__main__':
n = 3
s = Solution()
print(s.fib(n))
70. 爬楼梯
代码
# !/usr/bin/env python
# -*- coding:utf-8 -*-
# @Time : 2022.12
# @Author : hello algorithm!
# @Note : https://leetcode.cn/problems/climbing-stairs/
class Solution:
def climbStairs(self, n: int) -> int:
if n == 0:
return 0
if n == 1:
return 1
f0 = 1
f1 = 1
result = 0
for i in range(2, n + 1):
result = f0 + f1
f0 = f1
f1 = result
return result
if __name__ == '__main__':
pass
746. 使用最小花费爬楼梯
代码
# !/usr/bin/env python
# -*- coding:utf-8 -*-
# @Time : 2022.12
# @Author : hello algorithm!
# @Note : https://leetcode.cn/problems/min-cost-climbing-stairs/
from typing import List
class Solution:
def minCostClimbingStairs(self, cost: List[int]) -> int:
# dp[i] = min(dp[i - 1] + cost[i - 1], dp[i - 2] + cost[i - 2])
result = [0, 0]
for i in range(2, len(cost) + 1):
result.append(min(result[-1] + cost[i - 1], result[-2] + cost[i - 2]))
return result[-1]
if __name__ == '__main__':
pass