关闭

[LeetCode]problem 70. Climbing Stairs

124人阅读 评论(0) 收藏 举报
分类:

link

TAG

动态规划

类-斐波拉切

方法

之前写算法作业时做过,所以现在看起来就很简单了…

满足以下递推式:

A(1) = 1
A(2) = 2
A(n) = A(n-1) + A(n-2) 

其中A(n)表示到第n步梯子时有多少中不同的爬法。记得以前高中时也考过这个题.. 当时也不会。

想想,其实自己以前也不够聪明的… 想来聪明也可来自强大的记忆力和广博的经历。多多刷题啊..

代码

class Solution {
public:
    int climbStairs(int n) {
        vector<int> R(n) ;
        R[0] = 1 ;
        R[1] = 2 ;
        for(size_t i = 2; i < n; ++i)
        {
            R[i] = R[i-1] + R[i-2];
        }
        return R[n-1];
    }
};

后记

  1. 代码考虑不完全!

    看了题解,才突然发现自己没有考虑n为小于等于0的情况…b边界条件还是考虑不周啊.虽然不影响最后的提交结果…

  2. 可以比较容易地写出空间O(1)的版本

    犹记得当年写斐波拉切时,我只会学着书上用递归,学长用的数组,网上找到O(1)方法…

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    有什么值得去写?

    一位师兄以前说,现在互联网上的各种教程都是相互拷贝,一堆垃圾,根本没有写的必要。我想想觉得也很有道理。

    如果你只是记录下一个软件的安装过程,那还不如去看官方文档。但是如果你加上遇到的坑以及解决办法,那么这或许是一篇有意义的文章。如果你只是记录下一个函数简单用法,那怎么不去看官方文档(确实我现在都是去官方文档看)?但是如果你加上一些这个函数常用场景,用起来的漂亮代码,内部实现原理,那么这篇文章也是有意义的。

    最近因为找工作,在刷LeetCode。以前我还从网上找题解,后来我直接在DISCUSS上看HOT就好了。那我记录有何理由?我可以记录思考过程,可以考虑代码的优化,可以展示清晰易读标准C++11的代码

    个人资料
    • 访问:65741次
    • 积分:1691
    • 等级:
    • 排名:千里之外
    • 原创:104篇
    • 转载:13篇
    • 译文:0篇
    • 评论:13条