代码改变世界

Climbing Stairs

2015-03-09 09:37  笨笨的老兔子  阅读(130)  评论(0编辑  收藏  举报

爬楼梯,一次爬一层或两层,要爬n层,有几种方法

本题有一个简单的递推式:f(n)=f(n1)+f(n2)

注意点:

  • 注意n的边界
  • 注意不要使用递归求解,会爆栈以及浪费大量时间
  1. class Solution {
  2. public:
  3. int climbStairs(int n) {
  4. if (n < 0)
  5. return 0;
  6. if (n <= 2)
  7. return n;
  8. int a1 = 1, a2 = 2;
  9. int res = 0;
  10. for (size_t i = 3; i <= n; i++)
  11. {
  12. res = a1 + a2;
  13. a1 = a2;
  14. a2 = res;
  15. }
  16. return res;
  17. }
  18. };