日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

[算法笔记] 爬楼梯

發(fā)布時(shí)間:2024/4/18 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [算法笔记] 爬楼梯 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
70.爬樓梯 https://leetcode-cn.com/problems/climbing-stairs/

假設(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 階

You are climbing a stair case. It takes n steps to reach to the top.

Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?

Example 1:

Input: 2 Output: 2 Explanation: There are two ways to climb to the top. 1. 1 step + 1 step 2. 2 steps

Example 2:

Input: 3 Output: 3 Explanation: There are three ways to climb to the top. 1. 1 step + 1 step + 1 step 2. 1 step + 2 steps 3. 2 steps + 1 step

?

Constraints:

  • 1 <= n <= 45

題解:

1. 動(dòng)態(tài)規(guī)劃法求解:

本問(wèn)題其實(shí)常規(guī)解法可以分成多個(gè)子問(wèn)題,爬第n階樓梯的方法數(shù)量,等于 2 部分之和:a. 爬上` n-1` 階樓梯的方法數(shù)量q。因?yàn)樵倥?階就能到第n階b. 爬上` n-2` 階樓梯的方法數(shù)量p。因?yàn)樵倥?階就能到第n階 所以我們得到公式 r = p + q 同時(shí)需要初始化 r=1 和p=0,q=0。 注意:初始值的設(shè)置和循環(huán)條件有關(guān)系。

時(shí)間復(fù)雜度:O(n)
C語(yǔ)言解法:

int climbStairs(int n){int p = 0, q = 0, r = 1;for (int i = 1; i <= n; ++i) {p = q; q = r; r = p + q;}return r; }

2. 斐波那契數(shù)列
如果觀察數(shù)學(xué)規(guī)律,可知本題是斐波那契數(shù)列,那么用斐波那契數(shù)列的公式即可解決問(wèn)題,公式如下:

時(shí)間復(fù)雜度:O(logn)

Java實(shí)現(xiàn):

class Solution {public int climbStairs(int n) {double sqrt_5 = Math.sqrt(5);double fib_n = Math.pow((1 + sqrt_5) / 2, n + 1) - Math.pow((1 - sqrt_5) / 2,n + 1);return (int)(fib_n / sqrt_5);} }

聲明:感謝畫手大鵬提供的思路: https://leetcode-cn.com/problems/climbing-stairs/solution/hua-jie-suan-fa-70-pa-lou-ti-by-guanpengchn/

總結(jié)

以上是生活随笔為你收集整理的[算法笔记] 爬楼梯的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。