Leetcode70. 爬樓梯

  • 題目要求:

image.png

  • 思路1:python

    • 定義數組num,長度爲給定的n的長度
    • 若是n大於1,num[0]賦爲1,由於走上第一個臺階只有一種方法,也就是邁一步
    • 若是n大於2,num[1]賦爲2,也就是走上第二個臺階有兩種方法,第一種是走一步,再走一步,第二種是直接走兩步
    • 而後for循環遍歷數組,從下標位置爲2開始遍歷,也就是上第三個臺階,能夠是第二個臺階走一步,也能夠是從第一個臺階走一步上來,那麼第三個臺階的方法就是第二個臺階的方法加上第一個臺階的方法,也就是num[i]的臺階的方法數爲num[i-1]與num[i-2]的和。
    • 最後返回數組最後一位元素的值便可
  • 核心代碼:
# 初始化數組,能夠爲0,能夠爲None
num = [0] * n
# 若是 n 大於等於1,那麼走第一個臺階的方法有一個,就是走一步
if n >= 1:
    num[0] = 1
    # 若是臺階數大於等於2,走第二個臺階的方法有兩種
    if n >= 2:
        num[1] = 2
        # 第二個臺階以後的臺階就能夠經過這個臺階的前兩個臺階的方法數的和求來
        for i in range(2,n):
            num[i] = num[i-1] + num[i-2]
# 返回結果
return num[-1]
  • 完整代碼:
class Solution:
    def climbStairs(self, n: int) -> int:
        num = [0] * n
        if n >= 1:
            num[0] = 1
            if n >= 2:
                num[1] = 2
                for i in range(2,n):
                    num[i] = num[i-1] + num[i-2]
        return num[-1]
  • 思路2:數組

    • 對比思路1,其實到臺階n,只有臺階n-1和n-2的方法數是須要知道的,以前保存的全部數值都是不重要的
    • 因此維護一個pre,用來保存走前一個的前一個臺階的方法數,初始值賦爲0
    • 維護一個cur,用來保存走當前臺階的前一個臺階的方法數,初始值爲1
    • for循環遍歷,遍歷到當前的臺階的方法數爲pre+cur,在這以前,要先把pre賦給cur,python有一個特性就是兩個變量能夠直接進行交換,具體見代碼
  • 核心代碼:
pre , cur = 0 , 1
for i in range(n):
    pre , cur = cur , pre + cur
return cur
  • 完整代碼:
class Solution:
    def climbStairs(self, n: int) -> int:
        pre , cur = 0 , 1
        for i in range(n):
            pre , cur = cur , pre + cur
        return cur
相關文章
相關標籤/搜索