zoukankan      html  css  js  c++  java
  • 70. 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.

    Example 1:

    Input: 2
    Output: 2
    Explanation: There are two ways to climb to the top.
    1. 1 step + 1 step
    2. 2 steps
    

    Example 2:

    Input: 3
    Output: 3
    Explanation: There are three ways to climb to the top.
    1. 1 step + 1 step + 1 step
    2. 1 step + 2 steps
    3. 2 steps + 1 step

    //这道题其实就是斐波那契数列,用递归会超时
    //Approach: Recursive Time: O(n!), Space: O(1)  Tim Limited Exceed
    public int climbStairs(int n) {
            if (n <= 2) {
                return n;
            }
            
            return climbStairs(n - 1) + climbStairs(n - 2);
        }
    
    //Approach: Iteration Time: O(n)
    //1. Your runtime beats 2.35 % of java submissions.   
     public int climbStairs(int n) {
            if (n <= 2) {
                return n;
            }
            
            int first = 1;
            int second = 2;
            int result = 0;
            
            for (int i = 3; i <= n; i++) {
                result = first + second;
                first = second;
                second = result;
            }
            
            return result;
        }
    //2. Your runtime beats 48.13 % of java submissions.
        public int climbStairs(int n) {
            if (n <= 1) return 1;
            int[] dp = new int[n];
            dp[0] = 1; dp[1] = 2;
            for (int i = 2; i < n; ++i) {
                dp[i] = dp[i - 1] + dp[i - 2];
            }
            return dp[n - 1];
        }
    
    //3. Your runtime beats 100.00 % of java submissions
        public int climbStairs(int n) {
            int a = 1, b = 1;
            while (n > 0) {
                b += a; 
                a = b - a;
                n--;
            }
            return a;
        }
  • 相关阅读:
    BlockUI常见问题
    AssemblyInfo文件
    asp.net 如何让虚拟目录里面的webconfig不继承主目录config(转)
    jquery Ajax示例
    jQuery Ajax 实例 全解析 (转)
    如何在ASP.NET服务器控件库中嵌入JavaScript脚本文件(转)
    如何使用ASP.NET2.0的“嵌入的资源”(转)
    BlockUI对话框
    Jquery ajax参数设置
    What's production quality
  • 原文地址:https://www.cnblogs.com/jessie2009/p/9779039.html
Copyright © 2011-2022 走看看