题目:
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
注意:给定 n 是一个正整数
解题思路:可以用递归的方法解决但是光用递归时间复杂度会超过题目要求的条件,所以可以通过map把重复的阶梯数存起来,精简时间复杂度
代码实现:
class Solution {
HashMap<Integer,Integer> map = new HashMap();
public int climbStairs(int n) {
if(n == 1) return 1;
if(n == 2) return 2;
if(map.containsKey(n))
return map.get(n);
int sum = climbStairs(n - 1) + climbStairs(n - 2);
map.put(n,sum);
return sum;
}
}