(๑˃ᴗ˂)ﻭ
嗨,我是wec,今天是DAY 7。
每次可以爬1或2階台階,找出有多少種方法可以到達第n
階台階。
第1步: 用兩個變量a
和b
來記錄到達前兩級樓梯的爬法數a
代表到n-2
級的爬法數,b
代表到達第n-1
級的爬法數。
第2步: 然後從第3階開始,不斷更新a
和b
的值,直到計算到第n
級。
第3步: 最後return的b
就是到達第n
階樓梯的總爬法數。
程式碼:
def climb_stairs(n)
return n if n <= 2
a, b = 1, 2
(3..n).each { a, b = b, a + b }
b
end
迭代法: 時間複雜度為O(n)
➡️ 因為使用固定數量的變量(a
和b
),所以迭代法的空間複雜度為O(1),可以很好的去節省內存。比起遞迴法,迭代法不會有重複計算的問題,所以在簡單的題目上會比較有效率,不過當題目較為複雜時,遞迴法也會成為解題的選擇ㄛ(っ˘ω˘ς )。
以上就是今天的內容!明天開始要刷15天的medium題了ㄛ(拿出小痛苦面具)
相信IT人動腦時都要吃點東西,所以今天邊寫邊吃醬油仙貝。
明天要說:Ruby精選刷題!Medium路跑D-1(>∀・)⌒☆