zoukankan      html  css  js  c++  java
  • 【leetcode70】【动态规划】 爬楼梯

    (1 pass 一维动态规划)

     爬楼梯(easy)

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

    直接递归超时:
        public int climbStairs(int n) {
            if (n == 1) {
                return 1;
            }
            if (n == 2) {
                return 2;
            }
            return climbStairs(n-1) + climbStairs(n-2);
        }
    运行超时:您的程序未能在规定时间内运行结束,请检查是否循环有错或算法复杂度过大。
    case通过率为0.00%

    一维动态规划:

        public int climbStairs(int n) {
            if (n == 1) {
                return 1;
            }
            if (n == 2) {
                return 2;
            }
    
            int[] step = new int[n+1];
            step[1] = 1;
            step[2] = 2;
            for (int i=3;i<=n;i++) {
                step[i] = step[i-1] + step[i-2];
            }
            return step[n];
        }
  • 相关阅读:
    2016-09-13面试记录
    javascript中的深度拷贝的实现过程及深拷贝的几种方法。
    javascript中的for in循环
    常见的兼容问题及其解决方法。
    一次清空所有数据方法
    数组排序
    css对齐 挖坑~
    css reset样式重置
    CSS 表单
    CSS 表格
  • 原文地址:https://www.cnblogs.com/twoheads/p/10649779.html
Copyright © 2011-2022 走看看