如果您已经有思路了,或者是N刷了,可以先自己写一遍。
题目分析
题目说明:假设你正在爬楼梯,需要 n 步你才能到达顶部,每次你可以爬 1 或 2 个台阶,你有多少种不同的方法可以爬到楼顶呢?
这个问题的关键在于理解,到达第 n 阶的方法数量是到达第 n-1 阶和第 n-2 阶的方法数之和,因为到达第 n 阶的最后一步要么是从第 n-1 阶上来的,要么是从第 n-2 阶上来的。
解题思路
我们可以使用动态规划(Dynamic Programming,DP)技术来解决这个问题。
动态规划是一种解决复杂问题的方法,它将问题分解为更小的子问题,并先解决这些子问题,然后合并这些子问题的解决方案来解决原始问题。
具体做法:创建一个数组来存储到达每一阶梯的方法数,然后逐步构建这个数组。
Java解法
下面是使用Java语言的解法:
1 | public class Solution { |
通过这种方式,我们能够在 O(n)
的时间复杂度内找到到达楼顶的方法数,其中 n
是楼梯的阶数。