精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

青蛙跳臺階,能寫一個復雜度更低的解法嗎?

開發 前端
今天的內容是關于一道算法題—青蛙跳臺階。這是一個面試很喜歡考的題,看到它,大部分人腦海中應該立馬出現:斐波那契亞數列—遞歸—f(n)=f(n-1)+f(n-2)。

大家好,我是年年!今天的內容是關于一道算法題——青蛙跳臺階。這是一個面試很喜歡考的題,看到它,大部分人腦海中應該立馬出現:斐波那契亞數列——遞歸——f(n)=f(n-1)+f(n-2)。

但輔導的小伙伴上周在面試中遇到的問題是:除了遞歸,能不能寫出別的解法,降低算法的時間復雜度。這篇文章給出這道題的更優解。

題目

一只青蛙一次可以跳上1級臺階,也可以跳上2級臺階。求該青蛙跳上一個n級的臺階總共有多少種跳法?

分析

這是一個最基礎的動態規劃類問題,首先來講一下思路:當n較小時,可以直接枚舉得到結果:

  1. n=1時,青蛙僅有直接跳上一級臺階這種跳法,即一種跳法;
  2. n=2時,青蛙可以先跳 上 1 級,然后再跳 上 1 級到達2級臺階,;也可以直接跳 2 級臺階,即一共有兩種解法;

當n較大時,去枚舉不現實了。但可以想象一下青蛙“最后一跳”有哪些情況:因為青蛙一次可以跳1個或2個臺階,所以只可能是兩種情況:從n-1級跳1級上去,以及從n-2階的位置跳2級上去。我們想要知道跳n級臺階有多少種解法,只需要知道跳n-1級臺階和跳n-2級臺階的跳法,把他們加起來就可以。即得到一個公式f(n)=f(n-1)+f(n-2)。

常規解法(遞歸)

看到這個式子f(n)=f(n-1)+f(n-2),應該很快能反應:斐波那契亞數列,代碼很容易寫出來。遞歸的關鍵是確認遞歸出口,即:當只有1級臺階,只有一種跳法;只有2級臺階時,有兩種跳法。

代碼如下:

function frogJump(n) {
if (n >= 3) {
let result = frogJump(n - 1) + frogJump(n - 2)
return result
} else if (n === 1) {
return 1
}else if(n===2) {
return 2
}
}
let result = frogJump(6) // 13
console.log(result)

復雜度分析

上面這張遞歸解法只有60分,因為時間復雜度太高。

圖片

可以看到,因為沒有把結果保存,出現了很多重復計算的步驟:為了得到f(6)的結果,需要計算f(5)和f(4),為了得到f(5)的結果,需要計算f(4)和f(3),這里兩次計算f(4)是獨立的事件,也就是說,我們做了很多重復工作。

把上面這棵樹補充成一個完全樹,如下:

圖片

這種算法復雜度可以用2^0+2^1+2^2+...+2^4表示,即時間復雜度近似為O(2^N)(回憶一下高中數學的等比數列)。

而空間復雜度是調用棧的深度,從上面的圖可以看出來,最大的棧深是n-1,即空間復雜度是O(n)

進階解法(尾遞歸)

上面這種解法時間復雜度很高在于做了很多重復計算,從遞歸公式能看出來:f(n)=f(n-1)+f(n-2)=f(n-2)+f(n-3)+f(n-3)+f(n-4),一生二,二生四,四生八,整個計算過程就像是發散開來一樣。每一次調用都沒有保留下“狀態”,造成了大量的計算浪費。

只要我們保留下計算的結果,就可以把時間復雜度控制在O(n),也就是下面“尾遞歸”。

代碼如下:

function frogJump(first, second, n) {
let a = first,
b = second
let c = first + second
if (n > 3) {
a = second
b = first + second
return frogJump(a, b, n - 1)
} else if (n === 3) {
return c
} else if ( n === 2) {
return 2
} else if(n===1) {
return 1
}
}
let result = frogJump(1, 2, 6)
console.log(result)

我們用abc三個變量,把計算的結果保存下來,避免重復的工作。從first=1,second=2開始計算,每次遞歸調用更新first和second的值,這就是在保存下每次計算的結果,供下一次遞歸使用。直到n=3,滿足遞歸終止條件。

復雜度分析

這種尾遞歸,時間復雜度只有O(N),但他是幾種解法里面最難想到,也最難理解的。空間復雜度即遞歸的深度,是O(N)。

進階解法(循環)

循環和遞歸是可以相互轉化的,所以一種優化思路是用循環把上面的邏輯實現。

function frogJump(n) {
if (n === 1) {
return 1
} else if(n===2) {
return 2
}else {
let a = 1,
b = 2,
c
let count = 0
while (count < n - 2) {
c = a + b
a = b
b = c
count++
}
return c
}
}
let result = frogJump(6)
console.log(result)

我們首先知道了計算公式f(n)=f(n-1)+f(n-2);并且知道:當只有一級臺階時,只有一種解法,只有兩級臺階時,只有兩種解法。如果有三級臺階,計算一次即可(計算F(3));有四級臺階,計算兩次即可(計算f(3)、f(4))所以可推,當計算f(n)時,需要計算的次數是n-2,這就是循環的次數。上面的代碼便不難寫出。

復雜度分析

通過循環,我們同樣保留下了計算的結果,減少了重復的工作,時間復雜度是O(N)??臻g復雜度是O(1)。

結語

通過這道算法題,能感受到循環通常比遞歸在時間復雜度上有優勢,但它更難想到,代碼塊也會更復雜。通常一個算法的遞歸和循環是可以相互轉化的,可以試著把之前刷過的題用不同的思路實現一下。

責任編輯:姜華 來源: 前端私教年年
相關推薦

2021-04-29 07:15:20

動態規劃DP

2024-04-25 08:33:25

算法時間復雜度空間復雜度

2021-04-14 14:50:27

計算機模型 技術

2015-10-13 09:43:43

復雜度核心

2020-12-30 09:20:27

代碼

2021-01-05 10:41:42

算法時間空間

2024-07-30 10:55:25

2009-07-09 10:45:16

C#基本概念復雜度遞歸與接口

2019-11-18 12:41:35

算法Python計算復雜性理論

2021-10-15 09:43:12

希爾排序復雜度

2019-12-24 09:46:00

Linux設置密碼

2018-12-18 10:11:37

軟件復雜度軟件系統軟件開發

2022-08-16 09:04:23

代碼圈圈復雜度節點

2020-02-06 13:59:48

javascript算法復雜度

2022-08-25 11:00:19

編程系統

2021-09-17 10:44:50

算法復雜度空間

2021-06-28 06:15:14

算法Algorithm時間空間復雜度

2021-10-13 06:49:15

時間復雜度快排

2023-03-03 08:43:08

代碼重構系統

2014-07-01 15:49:33

數據結構
點贊
收藏

51CTO技術棧公眾號

日韩av在线中文| 国产91九色视频| 亚洲精品久久久久久| caoporn免费在线| 美女爽到高潮91| 日韩在线观看av| 午夜激情视频网| 欧美人与性动交α欧美精品图片| 国产精品一区二区三区网站| 欧美国产日韩一区二区在线观看| 图片区偷拍区小说区| 多野结衣av一区| 国产午夜精品理论片a级大结局| 国产精品jizz在线观看麻豆| 亚洲色图 激情小说| 国产精品久一| 亚洲成av人片| 日本在线播放不卡| 国产伦精品一区二区三区视频痴汉| 亚洲澳门在线| 日韩精品999| 亚洲老女人av| www.8ⅹ8ⅹ羞羞漫画在线看| 久久精品亚洲乱码伦伦中文| 成人福利视频在线观看| 日本 欧美 国产| 国产精品久av福利在线观看| 欧洲一区在线观看| 久久久久久久9| 免费人成在线观看网站| 国产精品资源网| 欧美在线视频一区二区| 久久久视频6r| 日韩黄色av| 色欧美乱欧美15图片| 2022中文字幕| 成人激情电影在线看| 粉嫩久久99精品久久久久久夜| 18一19gay欧美视频网站| 97人妻人人揉人人躁人人| 亚洲一区二区三区四区电影| 色天天综合久久久久综合片| 99re8这里只有精品| 日本午夜在线视频| 国产真实乱子伦精品视频| 2019av中文字幕| 青娱乐av在线| 日韩精品久久| 日韩第一页在线| 久久精品亚洲天堂| 天堂√8在线中文| 亚洲精品欧美在线| 亚洲精品一区二区毛豆| 婷婷丁香花五月天| 丁香六月综合激情| 成人免费自拍视频| 无码人妻av一区二区三区波多野 | 久久精品国产第一区二区三区最新章节| www.久久久久久久| 亚洲大胆在线| 欧美另类精品xxxx孕妇| 黑人狂躁日本娇小| 久久蜜桃av| 日韩电影免费在线观看中文字幕| 欧美色图校园春色| 成人在线视频国产| 欧美精品久久一区二区三区| 丁香啪啪综合成人亚洲| 欧美13videosex性极品| 一区二区三区四区中文字幕| 亚洲免费久久| 日韩精品成人av| 中文字幕精品综合| 久久精品视频网站| 日韩欧美视频一区二区| 国产精品高潮呻吟AV无码| 欧美aaaaa成人免费观看视频| 欧美在线一区二区三区四| 日韩激情在线播放| 极品尤物久久久av免费看| 久久久久久91| 日本三级2019| 日韩一级免费| 91超碰中文字幕久久精品| 精品一区在线视频| 中文亚洲欧美| 欧美激情一级精品国产| 日本免费在线播放| 国产午夜精品一区二区三区欧美| 亚洲18私人小影院| 免费一级全黄少妇性色生活片| 综合久久亚洲| 久久免费精品视频| av大片免费在线观看| 亚洲精品免费观看| 久久久久久久久久国产| 久久午夜免费视频| 日日夜夜免费精品| 成人免费激情视频| www.日日夜夜| 91天堂素人约啪| 青青草成人网| 国产视频中文字幕在线观看| 一区二区三区欧美日| 久色视频在线播放| 国内精品伊人| 日韩午夜在线观看| yy6080午夜| 欧美日韩一二三四| 久久国产精品影视| 久久久久亚洲av成人毛片韩| 日本不卡视频一二三区| 91亚洲国产成人久久精品网站| 又骚又黄的视频| 国产一区福利在线| 久久久久久艹| 女女色综合影院| 欧美日韩黄色大片| 亚洲 激情 在线| 国产欧美三级电影| 在线精品高清中文字幕| 激情五月婷婷在线| 日本欧美一区二区三区乱码| 99re视频| 欧美成人综合在线| 亚洲一区视频在线| 欧美三级理论片| 国产 日韩 欧美 综合 一区| 国产一区二区成人| 91嫩草丨国产丨精品| 久久久久看片| 成人激情av| 看女生喷水的网站在线观看| 五月婷婷久久综合| 手机精品视频在线| 亚洲精品进入| 欧美精品激情在线| 中文字幕网址在线| 91麻豆视频网站| 青青青在线观看视频| 欧美××××黑人××性爽| 欧美一卡二卡三卡四卡| 69视频在线观看免费| 亚洲精品乱码| 国产精品99久久久久久久| 婷婷免费在线视频| 在线精品视频免费播放| 午夜剧场免费看| www.成人精品| 久久综合一区二区| 特级毛片在线免费观看| 久久夜夜操妹子| 精品视频久久久| 日本少妇bbwbbw精品| 国产精品自在在线| 亚洲一区二区三区四区中文| 爱情电影社保片一区| 亚洲а∨天堂久久精品9966| 青青草手机视频在线观看| 精品在线一区二区三区| 日韩欧美一区二区三区久久婷婷| 亚洲美女尤物影院| 亚洲第一区在线观看| 精品一级少妇久久久久久久| 国产精品自在欧美一区| 国产午夜精品视频一区二区三区| 亚洲精品三区| 日韩在线视频一区| 国产又大又黑又粗| 1000精品久久久久久久久| 亚洲另类第一页| 久久免费大视频| 国产欧美日韩高清| 97最新国自产拍视频在线完整在线看| 色噜噜狠狠成人中文综合| 久久久精品人妻无码专区| 在线综合欧美| 欧美成人免费在线| 天堂中文av在线资源库| 日韩欧美一卡二卡| 九九视频免费在线观看| 成人av高清在线| 成人在线免费观看av| 亚洲精品亚洲人成在线| 国产精品白嫩初高中害羞小美女| 美丽的姑娘在线观看免费动漫| 日韩欧中文字幕| 特级西西www444人体聚色 | 免费又黄又爽又色的视频| 国产高清精品网站| 国产aaa免费视频| 人体久久天天| 国产91免费看片| 拍真实国产伦偷精品| 欧美丰满一区二区免费视频| 国产一区二区播放| 成人激情免费网站| 久久网站免费视频| 91一区二区三区四区| 国产一区二区在线播放| 黄色影院在线看| 精品国产伦一区二区三区免费| 国产大片免费看| 成人美女视频在线观看18| 国产欧美高清在线| 久久五月天小说| www.成人三级视频| 亚洲伊人av| xvideos亚洲| 亚洲精品视频专区| 色欧美乱欧美15图片| 国产成人免费在线观看视频| 国产一区二区三区观看| 少妇无码av无码专区在线观看 | 欧美日韩一区中文字幕| 少妇久久久久久被弄高潮| 91性感美女视频| 91热视频在线观看| 日韩专区欧美专区| 吴梦梦av在线| 欧美三级午夜理伦三级小说| 国产精品美女在线观看| 调教一区二区| 一本大道久久加勒比香蕉| 国产黄色一区二区| 91高清在线观看| 久久艹精品视频| 国产精品污www在线观看| 久久久高清视频| 狠狠色狠狠色综合| 免费av手机在线观看| 欧美xxav| 日本亚洲导航| 欧美网色网址| 97中文在线| 久久婷婷五月综合色丁香| 97超级碰碰人国产在线观看| 国产三级视频在线看| 亚洲成av人乱码色午夜| 一级黄在线观看| 欧美专区亚洲专区| 久草资源在线视频| 日韩美女视频一区二区| 性欧美一区二区| 91丨国产丨九色丨pron| 涩视频在线观看| 国内成人精品2018免费看| 欧美性猛交xxx乱久交| 欧美私人啪啪vps| 日本黄色播放器| 欧美精品久久久久久| 久久精品国产综合精品| jizz久久精品永久免费| 亚洲a成v人在线观看| 欧美视频免费看| 国产精品亚洲第一区| 欧美大胆成人| 国产成人久久久| av漫画网站在线观看| 欧美激情乱人伦一区| 污视频网站在线免费| 麻豆国产va免费精品高清在线| 在线日本中文字幕| 中文字幕亚洲欧美日韩在线不卡| 久久久久久女乱国产| 爱爱精品视频| 国产91色在线|| 国产成人77亚洲精品www| 国产欧美一区二区白浆黑人| 全球中文成人在线| av一区二区三区四区电影| 久久精品亚洲成在人线av网址| 国内一区二区三区在线视频| 丝袜连裤袜欧美激情日韩| 日韩国产欧美精品| 亚洲一区 二区 三区| 加勒比成人在线| 久久精品人人做人人爽电影蜜月| 青青在线免费观看视频| 久久精品99久久久| 中文字幕无人区二| 国产亚洲综合av| 国产稀缺精品盗摄盗拍| 午夜精品123| 亚洲天堂免费av| 精品久久国产字幕高潮| 欧洲亚洲在线| 欧美成年人在线观看| 欧美极品videos大乳护士| 国产精品三级网站| 成人福利免费在线观看| 色噜噜狠狠一区二区三区| 国产精品观看| 别急慢慢来1978如如2| 国产精品综合二区| 影音先锋制服丝袜| 亚洲国产欧美日韩另类综合| 加勒比在线一区| 日韩精品一区二区三区视频播放 | 成人免费毛片app| www色com| 亚洲成av人片在线观看无码| 又骚又黄的视频| 亚洲精美色品网站| 激情视频在线观看| 国产国语videosex另类| 99精品在免费线中文字幕网站一区 | 成人视屏免费看| gv天堂gv无码男同在线观看 | 337p粉嫩色噜噜噜大肥臀| 91精品国产乱| 国产黄色免费在线观看| 久久久久久久久久久久久久久久久久av | 亚洲男同1069视频| 在线观看亚洲黄色| 亚洲成色777777在线观看影院| 尤物网在线观看| 日韩av电影中文字幕| 亚洲精品a区| 免费看av软件| 蜜桃av噜噜一区| 91精品人妻一区二区三区蜜桃欧美| 一区二区三区在线看| 91成人在线免费| 正在播放欧美视频| 成人私拍视频| 九色91国产| 亚洲高清久久| 国产婷婷在线观看| 一区二区在线免费| 国产乱码精品一区二区三区精东 | 视频在线观看入口黄最新永久免费国产 | 亚洲国产天堂久久国产91| 国产不卡在线| 国产女同一区二区| 日韩av自拍| 亚洲精品乱码久久久久久自慰| 成人av网址在线观看| 国产小视频在线观看免费| 欧美一级黄色片| av网站在线免费看推荐| 成人国产精品一区| 91九色精品| 樱花草www在线| 亚洲丝袜另类动漫二区| 国产精品毛片久久久久久久av| 中文字幕精品久久久久| 亚洲电影有码| 夜夜爽99久久国产综合精品女不卡| 日韩综合小视频| 美女福利视频网| 91精品国产综合久久福利软件 | 韩剧1988免费观看全集| 超碰成人免费| 秋霞无码一区二区| 99久久国产综合精品色伊| 日韩成年人视频| 日韩精品欧美激情| 日韩一区二区三区免费| 天堂av一区二区| 久久99蜜桃精品| 久久精品www| 日韩精品极品视频免费观看| 美女18一级毛片一品久道久久综合| 牛人盗摄一区二区三区视频| 首页国产欧美久久| 亚洲欧美另类日本| 日韩精品在线一区二区| av在线资源| 日韩电影在线播放| 国产一区二区0| 日本特黄一级片| 亚洲香蕉成视频在线观看 | 欧美日韩成人在线一区| www.久久ai| 久久久久高清| 久久精品国产亚洲高清剧情介绍| 日韩视频中文字幕在线观看| 亚洲精品一区二区三区99| 国产精品粉嫩| 99精品视频网站| 91在线云播放| 国产又粗又黄又爽| 亚洲2020天天堂在线观看| 欧美午夜精彩| 性生交大片免费看l| 黑人精品xxx一区一二区| 日本在线观看网站| 国产精选一区二区| 免费亚洲电影在线| 精品无码免费视频| 在线成人一区二区| 波多野结衣在线一区二区| 一区二区三区入口| 亚洲成人手机在线| 91社区在线观看播放| 国产成人女人毛片视频在线| 视频在线在亚洲| 国产一级理论片| 中文字幕亚洲综合久久筱田步美|