zoukankan      html  css  js  c++  java
  • LeetCode——70 Java之爬楼梯

    题目要求:

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

    示例 3:

    输入: 4
    输出: 5
    解释: 有三种方法可以爬到楼顶。
    1.  1 阶 + 1 阶 + 1 阶 + 1 阶
    2.  1 阶 + 2 阶 + 1 阶
    3.  2 阶 + 1 阶 + 1 阶
    4. 2 阶 + 2 阶
    5. 1 阶 + 1 阶 + 2 阶
    思路:
    看到题目不要盯着题目空想,拿起笔在纸上想想,先列出n=1,n=2,n=3的情况,看不出来还可以继续写n=4的情况,你就会发现规律,最后一次爬的楼梯层数是由前面n-1层决定的。最后一次爬楼梯,如果爬
    的层数是1层,那么有f(n-1)种方法,如果最后一次爬楼梯的层数是2层,那么有f(n-2)种方法。于是根据这种思想就可以写代码了。
    class Solution {
        public int climbStairs(int n) {
            int f[]=new int[n+1];
            for(int i=1;i<n+1;i++){
              if(i<3){
                 f[i]=i;
              }else{          
                 f[i]=f[i-1]+f[i-2];                  
              }
            }
            return f[n];       
        }
    }
    
    
    
     
  • 相关阅读:
    BZOJ3573: [Hnoi2014]米特运输
    BZOJ3531: [Sdoi2014]旅行
    BZOJ3505: [Cqoi2014]数三角形
    BZOJ3309: DZY Loves Math
    BZOJ3260: 跳
    BZOJ3252: 攻略
    BZOJ3226: [Sdoi2008]校门外的区间
    BZOJ3155: Preprefix sum
    BZOJ2843: 极地旅行社
    BZOJ2671: Calc
  • 原文地址:https://www.cnblogs.com/xiayanjiao/p/10649183.html
Copyright © 2011-2022 走看看