leetcode111 爬楼梯 python实现

动态规划类题目
描述

假设你正在爬楼梯,需要n步你才能到达顶部。但每次你只能爬一步或者两步,你能有多少种不同的方法爬到楼顶部?

您在真实的面试中是否遇到过这个题?
样例
Example 1:
Input: n = 3
Output: 3

Explanation:
1) 1, 1, 1
2) 1, 2
3) 2, 1
total 3.

Example 2:
Input: n = 1
Output: 1

Explanation:  
only 1 way.

思路:上第I级台阶的方法总共有两大种,第一种是从第(i-1)级台阶上跨一级,第二种则是从第(I-2)级台阶上跨两级,除此并无他法,由于这个上楼方法从(i-1)和(i-2)级各只有一种方法,那么上第i级台阶的总的方法和数就是上前两级台阶的方法总和数

思路递归代码

class Solution:
    """
    @param n: An integer
    @return: An integer
    """
    def climbStairs(self, n):
        # write your code here
        if n==0:
            return 0
        if n==1:
             return 1
        pre,ppre=1,1#  pre,ppre前时刻,前2时刻
        for i in range(2,n+1):
            tmp = pre#tmp 用于pre ,与ppre 完成数值改变
            pre = pre + ppre#当前等于前面两步相加
            ppre = tmp#前一时刻变成前前时刻
        return pre

你可能感兴趣的:(leetcode学习笔记)