LeetCode初级算法--动态规划01:爬楼梯
一、引子
这是由LeetCode官方推出的的经典面试题目清单~
这个模块对应的是探索的初级算法~旨在帮助入门算法。我们第一遍刷的是leetcode推荐的题目。
二、题目
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
注意:给定 n 是一个正整数。
示例1:
输入: 2
输出: 2
解释: 有两种方法可以爬到楼顶。
1. 1 阶 + 1 阶
2. 2 阶
示例2:
输入: 3
输出: 3
解释: 有三种方法可以爬到楼顶。
1. 1 阶 + 1 阶 + 1 阶
2. 1 阶 + 2 阶
3. 2 阶 + 1 阶
1、思路
首先我可以确切的告诉你,这种简单的爬楼梯也是一个斐波那契数列,不信你自己从简单的数1,2,3..自己推论一下。
接着,我们来讨论一般情况。我们把n级台阶时的跳法看成是n的函数,记为f(n)。当n>2时,第一次跳的时候就有两种不同的选择:一是第一次只跳1级,此时跳法数目等于后面剩下的n-1级台阶的跳法数目,即为f(n-1);另外一种选择是跳一次跳2级,此时跳法数目等于后面剩下的n-2级台阶的跳法数目,即为f(n-2)。因此n级台阶的不同跳法的总数f(n)=f(n-1)+f(n-2)。分析到这里,我们不难看出这实际上就是斐波那契数列了。
2、编程实现
class Solution(object):
def climbStairs(self, n):
"""
:type n: int
:rtype: int
"""
if n == 1:
return 1
a = 1
b = 1
for i in range(1,n):
a , b = b , a+b
return b
本文由博客一文多发平台 OpenWrite 发布!
审核编辑 黄昊宇
-
人工智能
+关注
关注
1797文章
47867浏览量
240858 -
机器学习
+关注
关注
66文章
8453浏览量
133166 -
深度学习
+关注
关注
73文章
5521浏览量
121663 -
leetcode
+关注
关注
0文章
20浏览量
2349
发布评论请先 登录
相关推荐
Google日本子公司Schaft发布人形两足机器人
LabVIEW中时怎么导入图片的?
动态规划算法和贪心算法的区别与联系
![<b class='flag-5'>动态规划算法</b>和贪心<b class='flag-5'>算法</b>的区别与联系](https://file1.elecfans.com//web2/M00/A6/FC/wKgZomUMQaWAJ66oAAAMGrLw1pI149.jpg)
这款爬楼快递机器人,可以让你不用下楼,快递直接送进家
能爬楼梯的快递机器人如果量产 快递小哥真的要失业了
如何实现双足机器人爬楼梯的步态规划与参数优化
![如何实现双足机器人<b class='flag-5'>爬楼梯</b>的步态<b class='flag-5'>规划</b>与参数优化](https://file.elecfans.com/web1/M00/B9/71/o4YBAF6MPBCAW-F5AACFBV-kftM581.png)
自动调整平衡的爬楼梯机器人设计
如何利用Arduino UNO制作一个爬楼梯机器人
![如何利用Arduino UNO制作一个<b class='flag-5'>爬楼梯</b>机器人](https://file.elecfans.com//web2/M00/3B/2B/poYBAGJH_cqAcSHtAAOVm1G_hD4474.png)
评论