LeetCode Climbing Stairs
2016-04-08 21:50
507 查看
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?
每一次你能够爬一层或者两层。计算爬n层你能够有几种方法。
简单DP问题。可是对于渣渣的不懂DP的我来说还花了非常多时间去看了下算法导论的DP问题。
结果借鉴大牛代码算是写了简单的DP代码了:
public class Solution { public int climbStairs(int n) { if (n == 0 || n == 1) return 1; if (n < 0) return 0; return climbStairs(n - 1) + climbStairs(n - 2); } }
递归调用。
但是却超时了,果然正如书上说的。递归的自顶向下数据会爆炸式增长。
我们能够从上式看到斐波拉及数列的影子。所以改用递推:
public class Solution { public int climbStairs(int n) { if(n==0||n==1) return 1; int prev = 1; int cur = 1; for(int i=2;i<=n;i++) { int temp = prev + cur; prev = cur; cur = temp; } return cur; } }
相关文章推荐
- Codeforces Round #345 (Div. 2) B. Beautiful Paintings __ greedy and Bucket_sort
- (hdu step 8.1.1)ACboy needs your help again!(STL中栈和队列的基本使用)
- hdu 1039 Easier Done Than Said?
- leetcode:Contains Duplicate
- 阐述线程状态之间的关系
- Smail语法
- LeetCode之11---Container With Most Water
- 5.jenkins使用Email Extension Plugin插件配置邮件通知
- LeetCode之11---Container With Most Water
- Gradle project sync failed. Please fix your project and try again解决方案
- Logstash1.5 发邮件报警
- flask框架配置email问题汇总,包括163邮箱,qq邮箱,gmail等国内外邮箱
- 学习smail注入遇到的坑
- Service详解(六):进程间通信-AIDL
- MaraiDB社区
- 理解android.intent.action.MAIN 与 android.intent.category.LAUNCHER
- http://blog.csdn.net/chlele0105/article/details/9056951
- 11. Container With Most Water(头尾双指针)
- Mac电脑实用技巧(转自http://sspai.com/32769)
- Thumbnails 框架使用,图片常用操作