70.[Leetcode]Climbing Stairs

来源:互联网 发布:只有我知bilibili 编辑:程序博客网 时间:2024/04/29 05:36

题意:

一次只能走1级,或者2级,给你一个n级的楼梯,一共有多少种走完的方法

我的算法:

一开始肯定是想用递归,递归会很简答的写完,但是发现,到44这个测试样例就超时了

所以得用非递归,经过前面几个题的提醒,先试试找规律

1-1 | 2-2 | 3-3 | 4-5 | 5-8 | 6-13 ….

斐波那契数列啊!

// 我选择使用递归的算法// 可以是可以,但是会超时// 所以想想非递归的算法// 发现是个斐波那契数列问题啊// 所以应该怎么搞呢?class Solution {public:    int climbStairs(int n) {        // 递归的部分        //if (n == 1) return 1;        //else if (n == 2) return 2;        //else return climbStairs(n-1) + climbStairs(n-2);        // 非递归的部分        int n1 = 1,n2 = 2,temp;        if (n == 1 || n == 2) return n;        while (n-- >= 3) {            temp = n1+n2;            n1 = n2;            n2 = temp;        }        return n2;    }};
0 0
原创粉丝点击