第70题:爬楼梯

一. 问题描述

假设你正在爬楼梯。需要 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 阶

 

二. 解题思路

运用动态规划来解决此题,首先要得到动态规划的状态转移方程。f(n)=f(n-1)+f(n-2);

步骤一:根据状态转移函数可知,到达目标楼梯n的分别是n-1走一步和n-2走两步之和,则当从最后一步往初始步进行规划。

步骤二:经过循环可得到最终的可能性,此题非常简单,没啥可说的

 

三. 执行结果

执行用时 :0 ms, 在所有 java 提交中击败了100.00%的用户

内存消耗 :32.8 MB, 在所有 java 提交中击败了73.84%的用户

 

四. Java代码

class Solution {
    public int climbStairs(int n) {
          int first=1;
            int second=1;
            int temp=0;
            if(n==0)
            {
                return temp;
            }
            if(n==1)
            {
                return second;
            }
            for(int i=2;i<=n;i++)
            {
                temp=first+second;
                first=second;
                second=temp;
            }
            return temp;
    }
}

 

posted @ 2019-10-18 16:16  fish大叔  阅读(149)  评论(0)    收藏  举报