zoukankan      html  css  js  c++  java
  • leetcode 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
    
    斐波那契数列,没啥说的,可以DP或者简单的迭代求解!
    class Solution(object):
        def climbStairs(self, n):
            """
            :type n: int
            :rtype: int
            """
            # fib
            a = b = 1
            for i in xrange(2, n+1):
                a, b = b+a, a
            return a        

    DP:

    class Solution(object):
        def climbStairs(self, n):
            """
            :type n: int
            :rtype: int
            """
            # fib
            ways = [1]*(n+1)
            for i in xrange(2, n+1):
                ways[i] = ways[i-2]+ways[i-1]
            return ways[n]        
    

    还可以使用数学知识求解:

    This is Fibonacci number, and the world has already worked out an formula that

    enter image description here

    and where

    enter image description here

    or you can check the wiki Fibonacci Number

    and noticed the Fibonacci begins with F(0)=0, F(1)=1, F(2)=1, F(3)=2

    but this problem begins with F’(1)=1, F’(2)=2

    So we need a (n++) at the beginning to match the Fibonacci formula

    int climbStairs(int n) {
        n++;
        double root5 = pow(5, 0.5);
        double result = 1/root5*( pow((1+root5)/2, n) - pow((1-root5)/2, n) );
        return (int)(result);
    }
    
  • 相关阅读:
    性能卓越的js模板引擎--artTemplate
    AngularJS学习笔记之依赖注入
    高性能的JavaScript库---Lodash
    如何阅读一本书
    我为什么写博客
    [cocos2d-x]深入--几个代表性的类 (续)
    [cocos2d-x]深入--几个代表性的类
    [cocos2dx]2.2到3.1(3.0)升级帮助
    [cocos2dx]利用NDK崩溃日志查找BUG
    IT技术团队管理-总结
  • 原文地址:https://www.cnblogs.com/bonelee/p/8831285.html
Copyright © 2011-2022 走看看