题目描述
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
注意:给定 n 是一个正整数。
逻辑思路
最开始简单概括一下逻辑:爬楼梯总次数=不同的迈脚的次数(可以通过爬多少次2阶算出)*在哪个位置爬2阶
迈多少次脚(爬多少次2阶)
n个台阶,只看选1阶或选2阶的数量,可以有n/2+1种选法。
也可以说,因为不选2就是选1,直接看可以选多少不同2的次数决定了有多少选法,即总共需要迈多少次脚才能爬完楼梯。
比如说爬5阶台阶,你可以选只爬一次2阶,两次2阶或者一次都不爬,总共有3种迈脚的方法,即[5/2+1]
迈脚情况分为
(1)1 1 1 1 1
(2)1 1 1 2
(3)1 2 2
但迈脚情况不代表最后的组合结果
在哪爬2阶
迈几次脚还需要结合在哪里迈2阶,才能得到最后的爬楼梯方法。在不同位置爬2阶,也会产生不一样的上楼方法。
也就是说现在得到了一共要迈多少次脚,然后要选出在第几次迈脚迈2阶。也就是,在迈脚的次数n里,选出m次迈2阶的位置。当然你选择在哪几次迈脚迈1阶也是一样的,毕竟Cnm=Cnn−m\qquad\mathrm{C}_n^m=\qquad\mathrm{C}_n^{n-m}Cnm=

本文介绍了LeetCode70题——爬楼梯问题的纯数学解法,通过分析迈脚次数和选择2阶楼梯的位置,得出不同爬楼梯方法。通过计算迈脚次数的组合,并确定2阶楼梯的放置位置,如对于5阶楼梯,有3种不同的爬法:11111, 1112, 122。最后提供了代码实现来求解此类问题。"
114750378,10538344,Java递归遍历树形结构找子父节点,"['Java开发', '数据遍历', '递归算法', '数据库操作']
4829

被折叠的 条评论
为什么被折叠?



