leetcode:Climbing Stairs 【Java】
2016-03-13 21:00
337 查看
一、问题描述
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?
二、问题分析
此问题实际为斐波那契数列问题。注意不能使用递归算法,会报超时错误,需要采用缓存中间结果的策略。
三、算法代码
代码一:
代码二:
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?
二、问题分析
此问题实际为斐波那契数列问题。注意不能使用递归算法,会报超时错误,需要采用缓存中间结果的策略。
三、算法代码
代码一:
public class Solution { HashMap<Integer, Integer> result = new HashMap<Integer, Integer>(); public int climbStairs(int n) { if(n <= 2){ return n; } if(result.containsKey(n)){ return result.get(n); } result.put(n, climbStairs(n - 1) + climbStairs(n - 2)); return result.get(n); } }
代码二:
public class Solution { public int climbStairs(int n) { if(n <= 2){ return n; } int [] result = new int ; result[0] = 1; result[1] = 2; for(int i = 2; i < n; i++){ result[i] = result[i - 1] + result[i - 2]; } return result[n - 1]; } }
相关文章推荐
- 20145225 《Java程序设计》第2周学习总结
- Java编程思想学习(十四) 枚举
- spring中的cron表达式
- 20145213《Java程序设计》第二周学习总结
- java.sql.SQLException: ORA-00904:标识符无效
- 【RxJava Demo分析】(四)RxBus
- 深入理解Java String#intern() 内存模型
- Java之矩阵相减(A-B)
- spring mvc(注解)上传文件的简单例子
- Java 重写 equals 的小模板
- Java之矩阵相加(A+B)
- java.util.vector中的vector的详细用法【转】
- Java 反射 Reflection
- JDK source 之 ArrayList 需要注意事项
- 我对java这门课的认识
- spring中的依赖注入和控制反转(一)
- java设计模式——结构型之代理模式
- java线程之间的通信(等待/通知机制)
- Struts2 action之间相互跳转传递参数
- springwebmvc教程