LeetCode初級(jí)算法--動(dòng)態(tài)規(guī)劃01:爬樓梯
一、引子
這是由LeetCode官方推出的的經(jīng)典面試題目清單~
這個(gè)模塊對(duì)應(yīng)的是探索的初級(jí)算法~旨在幫助入門算法。我們第一遍刷的是leetcode推薦的題目。
二、題目
假設(shè)你正在爬樓梯。需要 n 階你才能到達(dá)樓頂。
每次你可以爬 1 或 2 個(gè)臺(tái)階。你有多少種不同的方法可以爬到樓頂呢?
注意:給定 n 是一個(gè)正整數(shù)。
示例1:
輸入: 2
輸出: 2
解釋: 有兩種方法可以爬到樓頂。
1. 1 階 + 1 階
2. 2 階
示例2:
輸入: 3
輸出: 3
解釋: 有三種方法可以爬到樓頂。
1. 1 階 + 1 階 + 1 階
2. 1 階 + 2 階
3. 2 階 + 1 階
1、思路
首先我可以確切的告訴你,這種簡(jiǎn)單的爬樓梯也是一個(gè)斐波那契數(shù)列,不信你自己從簡(jiǎn)單的數(shù)1,2,3..自己推論一下。
接著,我們來(lái)討論一般情況。我們把n級(jí)臺(tái)階時(shí)的跳法看成是n的函數(shù),記為f(n)。當(dāng)n>2時(shí),第一次跳的時(shí)候就有兩種不同的選擇:一是第一次只跳1級(jí),此時(shí)跳法數(shù)目等于后面剩下的n-1級(jí)臺(tái)階的跳法數(shù)目,即為f(n-1);另外一種選擇是跳一次跳2級(jí),此時(shí)跳法數(shù)目等于后面剩下的n-2級(jí)臺(tái)階的跳法數(shù)目,即為f(n-2)。因此n級(jí)臺(tái)階的不同跳法的總數(shù)f(n)=f(n-1)+f(n-2)。分析到這里,我們不難看出這實(shí)際上就是斐波那契數(shù)列了。
2、編程實(shí)現(xiàn)
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
本文由博客一文多發(fā)平臺(tái) OpenWrite 發(fā)布!
審核編輯 黃昊宇
-
人工智能
+關(guān)注
關(guān)注
1817文章
50106瀏覽量
265561 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8554瀏覽量
136996 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5599瀏覽量
124418 -
leetcode
+關(guān)注
關(guān)注
0文章
20瀏覽量
2547
發(fā)布評(píng)論請(qǐng)先 登錄
Google日本子公司Schaft發(fā)布人形兩足機(jī)器人
LabVIEW中時(shí)怎么導(dǎo)入圖片的?
動(dòng)態(tài)規(guī)劃與貪婪法題的背包問(wèn)題總結(jié)
動(dòng)態(tài)規(guī)劃算法和貪心算法的區(qū)別與聯(lián)系
伯克利和CMU聯(lián)合開發(fā)能像人類一樣行走的腿形機(jī)器人ATRIAS
這款爬樓快遞機(jī)器人,可以讓你不用下樓,快遞直接送進(jìn)家
能爬樓梯的快遞機(jī)器人如果量產(chǎn) 快遞小哥真的要失業(yè)了
如何實(shí)現(xiàn)雙足機(jī)器人爬樓梯的步態(tài)規(guī)劃與參數(shù)優(yōu)化
自動(dòng)調(diào)整平衡的爬樓梯機(jī)器人設(shè)計(jì)
如何利用Arduino UNO制作一個(gè)爬樓梯機(jī)器人
可爬樓梯,可旋轉(zhuǎn)90度立足的電動(dòng)車
LeetCode初級(jí)算法-動(dòng)態(tài)規(guī)劃01:爬樓梯
評(píng)論