題目1
【簡單】斐波那契數列
寫一個函數,輸入 n ,求斐波那契(Fibonacci)數列的第 n 項。斐波那契數列的定義如下:
F(0) = 0, F(1) = 1
F(N) = F(N - 1) + F(N - 2), 其中 N > 1.
斐波那契數列由 0 和 1 開始,之後的斐波那契數就是由之前的兩數相加而得出。
答案需要取模 1e9+7(1000000007),如計算初始結果爲:1000000008,請返回 1。
示例 1:
輸入:n = 2
輸出:1
解答:
class Solution:
def fib(self, n: int) -> int:
if n == 0:
return 0
if n == 1:
return 1
F_N_1 = 1
F_N_2 = 0
for n in range(2,n+1):
F_N = F_N_1 + F_N_2
F_N_2 = F_N_1
F_N_1 = F_N
return F_N % 1000000007
鏈接:https://leetcode-cn.com/problems/fei-bo-na-qi-shu-lie-lcof
題目2
【簡單】爬樓梯
假設你正在爬樓梯。需要 n 階你才能到達樓頂。
每次你可以爬 1 或 2 個臺階。你有多少種不同的方法可以爬到樓頂呢?
注意:給定 n 是一個正整數。
示例 1:
輸入: 2
輸出: 2
解釋: 有兩種方法可以爬到樓頂。
1. 1 階 + 1 階
2. 2 階
示例 2:
輸入: 3
輸出: 3
解釋: 有三種方法可以爬到樓頂。
1. 1 階 + 1 階 + 1 階
2. 1 階 + 2 階
3. 2 階 + 1 階
鏈接:https://leetcode-cn.com/problems/climbing-stairs
解答
# 其實就跟上題一樣,就是個斐波那契數列
class Solution:
def climbStairs(self, n: int) -> int:
if n == 1:
return 1
if n == 2:
return 2
fn = [2,1]
idx = 3
while idx < n+1:
ftemp = fn[0] + fn[1]
fn[1] = fn[0]
fn[0] = ftemp
idx += 1
return fn[0]