题目描述
假设你正在爬楼梯。需要n阶你才能到达楼顶。
每次你可以爬1或2个台阶。你有多少种不同的方法可以爬到楼顶呢?
题解思路:
class Solution { public int climbStairs(int n) { int[] dp = new int[n+1]; dp[0] = 1; dp[1] = 1; for(int i = 2;i <= n;i++){ dp[i] = dp[i-1]+dp[i-2]; } return dp[n]; } }思路总结:动态规划思想,第n阶的上一步来自于n-1阶或者n-2阶。两者相加为总的路径数,并且需要初始化一个数组,dp[0]和dp[1]的值都为1。