面试题 08.01. 三步问题
题目描述:
三步问题。有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶或3阶。实现一种方法,计算小孩有多少种上楼梯的方式。结果可能很大,你需要对结果模1000000007。
示例:
输入:n = 3
输出:4
说明: 有四种走法
提示:
- n范围在[1, 1000000]之间
解法
简单迭代。
代码
class Solution:
def waysToStep(self, n: int) -> int:
if n == 1:
return 1
a, b, c = 1, 1, 2
for _ in range(2, n):
d = a + b + c
a, b, c = b % 1000000007, c % 1000000007, d % 1000000007
return c
测试结果
执行用时:268 ms, 在所有 Python3 提交中击败了 66% 的用户
内存消耗:15.1 MB, 在所有 Python3 提交中击败了 51% 的用户
说明
算法题来源:力扣(LeetCode)