zoukankan      html  css  js  c++  java
  • leetcode : Climbing Stairs

    You are climbing a stair case. It takes n steps to reach to the top.

    Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?

    Note: Given n will be a positive integer.

    方法1:  动态规划

    方法2:  两个变量(最优解)

    方法3: 递归, 最差解

    动态规划解法:

    public class Solution {
        public int climbStairs(int n) {
            if(n == 0 ) {
                return 0;
            }
            if(n == 1){
                return 1;
            }
            int[] f = new int[n + 1];
            f[0] = 1;
            f[1] = 1;
            
            for(int i = 2; i <= n; i++) {
                f[i] = f[i - 1] + f[i - 2];
            }
            return f[n];
        }
    }
    

      

    方法二: 两个变量

    public class Solution {
        public int climbStairs(int n) {
            if(n == 0 ) {
                return 0;
            }
            if(n == 1){
                return 1;
            }
           
            int a = 0;
            int b = 1;
            int sum = 0;
            for(int i = 1; i <= n; i++) {
                sum = a + b;
                a = b;
                b = sum;
                
            }
            return sum;
        }
    }
    

      

  • 相关阅读:
    hdu5833----高斯消元
    高斯消元模板
    hdu4462--曼哈顿距离
    卡特兰数应用
    poj3070矩阵快速幂求斐波那契数列
    poj1042
    poj1328
    mvc 请求处理管道
    sql update 代替游标写法
    sql 表字段模糊连接
  • 原文地址:https://www.cnblogs.com/superzhaochao/p/6497525.html
Copyright © 2011-2022 走看看