LeetCode 刷题: Climbing Stairs --- 类似于Fibonacci 数列

原创 2015年11月20日 23:45:15

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?

这道题目类似于Fibonacci 数列。

解法有两种,一种是递归,一种是非递归:

非递归:

class Solution {
public:
    int climbStairs(int n) {
        if(n<=2)
            return n;
        
        int n1 = 1;
        int n2 = 2;
        int temp =3;
        int t;
        while(temp<=n)
        {
            t = n1 + n2;
            n1 = n2;
            n2 = t;
            temp++;
        }
        return n2;
    }
};

递归:

递归效率较低,我的一个递归算法没有被LeetCode 系统接受,理由是当n很大的时候,递归太多。

改进的方法是: 将每一个运算的结果记录下来,这样下一次计算的时候,如果已经算出值的,就不用再算一遍了

改进算法:

class Solution {
    unordered_map<int, int> res = {{1,1},{2,2},{3,3}};    //必须放在climbStairs 外面,全局变量
public:
    int climbStairs(int n) {
        if(res.find(n) == res.end())
        {
            res[n] = climbStairs(n-1) + climbStairs(n-2);
        }
        return res[n];
    }
};







版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

leetcode笔记:Climbing Stairs(斐波那契数列问题)

题目的大意是,已知有n阶楼梯,每次只能爬1阶或2阶楼梯,问爬到第n阶楼梯共有几种爬法。题目可以看成是,设f(n)表示爬到第n 阶楼梯的方法数,为了爬到第n阶楼梯,有以下两种选择: • 从第f(n-1)...

Leetcode刷题记——70. Climbing Stairs(爬楼梯)

一、题目叙述: You are climbing a stair case. It takes n steps to reach to the top. Each time...

leetcode Climbing Stairs

You are climbing a stair case. It takes n steps to reach to the top. Each time you can either climb...

【LeetCode-面试算法经典-Java实现】【073-Climbing Stairs(爬楼梯)】

【070-Climbing Stairs(爬楼梯)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  You are climbing a stair case. It ta...

LeetCode 之 Climbing Stairs (方法2)

上一次说了自顶向下,没看的可以回去看看 climbing stairs 方法1(自顶向上) 由于本人是学渣,自顶向下太抽象肿么破。。。。尼玛哥教你一个更抽象的,自底向上,自底向上代码比较简单,基本思想...

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...

LeetCode 70 Climbing Stairs(爬楼梯)(动态规划)(*)

翻译你正在爬一个楼梯。它需要n步才能到底顶部。每次你可以爬1步或者2两步。那么你有多少种不同的方法爬到顶部呢?原文You are climbing a stair case. It takes n s...
  • NoMasp
  • NoMasp
  • 2016-01-14 07:12
  • 4029

[LeetCode]70.Climbing Stairs

【题目】 You are climbing a stair case. It takes n steps to reach to the top. Each time you can eithe...

Leetcode note--Leetcode 70climbing Stairs

70. Climbing Stairs  My Submissions Total Accepted: 143040Total Submissions: 37227...

leetcode解题之70 #Climbing Stairs Java版 (青蛙跳台阶)

leetcode解题之70 #Climbing Stairs Java版 (青蛙跳台阶)
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)