国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

算法leetcode|70. 爬樓梯(rust重拳出擊)

這篇具有很好參考價值的文章主要介紹了算法leetcode|70. 爬樓梯(rust重拳出擊)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。



70. 爬樓梯:

假設(shè)你正在爬樓梯。需要 n 階你才能到達樓頂。

每次你可以爬 12 個臺階。你有多少種不同的方法可以爬到樓頂呢?

樣例 1:

輸入:
	
	n = 2
	
輸出:
	
	2
	
解釋:

	有兩種方法可以爬到樓頂。
	1. 1 階 + 1 階
	2. 2 階

樣例 2:

輸入:
	
	n = 3
	
輸出:
	
	3
	
解釋:

	有三種方法可以爬到樓頂。
	1. 1 階 + 1 階 + 1 階
	2. 1 階 + 2 階
	3. 2 階 + 1 階

提示:

  • 1 <= n <= 45

分析:

  • 面對這道算法題目,二當家的再次陷入了沉思。
  • 可以爬一階或者兩階臺階,那也就是說,除了初始位置,和第一階臺階,到達其他階臺階 n 的方式,就只能從 n - 1 階臺階,或者 n - 2 階臺階來。
  • 這是典型的動態(tài)規(guī)劃,到初始位置和第一階臺階的方式只有一種,之后到達每一階臺階的方法總數(shù)都可以動態(tài)計算得來,即 f(x) = f(x ? 1) + f(x ? 2)。
  • 動態(tài)規(guī)劃方法我覺得很好了,但是由于有規(guī)律,用數(shù)學的方式計算,當然更快了,另外將前幾項列出來,再結(jié)合定義,就會發(fā)現(xiàn),到達每一階臺階的方法總數(shù)恰好就是 斐波那契數(shù)列
  • 動態(tài)規(guī)劃只能從 1n 按順序推算,在 n 較大時,效率仍不令人滿意,矩陣快速冪,可以有像二分查找一樣的效率,數(shù)學的知識都還給老師了,有興趣的可以去研究一下,能看明白,但是過段時間又會忘記,無奈啊,矩陣快速冪矩陣乘法快速冪 的結(jié)合,可以先分別了解,再結(jié)合理解。
  • 所以建議一定要把動態(tài)規(guī)劃優(yōu)先掌握,其次是快速冪,至于通項公式,數(shù)學的方法,很難舉一反三,要具體問題具體分析,說到底還是需要掌握數(shù)學知識本身,與君共勉。
  • 最后,爬樓梯當然要5階5階的上才霸氣,要換一條松快的褲子。

題解:

rust:

impl Solution {
    pub fn climb_stairs(n: i32) -> i32 {
        let sqrt5 = 5f64.sqrt();
        let fibn = ((1f64 + sqrt5) / 2f64).powi(n + 1) - ((1f64 - sqrt5) / 2f64).powi(n + 1);
        return (fibn / sqrt5).round() as i32;
    }
}

go:

func climbStairs(n int) int {
    sqrt5 := math.Sqrt(5)
	pow1 := math.Pow((1+sqrt5)/2, float64(n+1))
	pow2 := math.Pow((1-sqrt5)/2, float64(n+1))
	return int(math.Round((pow1 - pow2) / sqrt5))
}

c++:

class Solution {
public:
    int climbStairs(int n) {
        const double sqrt5 = sqrt(5);
        const double fibn = pow((1 + sqrt5) / 2, n + 1) - pow((1 - sqrt5) / 2, n + 1);
        return (int) round(fibn / sqrt5);
    }
};

python:

class Solution:
    def climbStairs(self, n: int) -> int:
        sqrt5 = math.sqrt(5)
        fibn = pow((1 + sqrt5) / 2, n + 1) - pow((1 - sqrt5) / 2, n + 1)
        return round(fibn / sqrt5)


java:

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

非常感謝你閱讀本文~
歡迎【點贊】【收藏】【評論】三連走一波~
放棄不難,但堅持一定很酷~
希望我們大家都能每天進步一點點~
本文由 二當家的白帽子:https://le-yi.blog.csdn.net/ 博客原創(chuàng)~文章來源地址http://www.zghlxwxcb.cn/news/detail-650450.html


到了這里,關(guān)于算法leetcode|70. 爬樓梯(rust重拳出擊)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • 算法leetcode|72. 編輯距離(rust重拳出擊)

    算法leetcode|72. 編輯距離(rust重拳出擊)

    給你兩個單詞 word1 和 word2 , 請返回將 word1 轉(zhuǎn)換成 word2 所使用的最少操作數(shù) 。 你可以對一個單詞進行如下三種操作: 插入一個字符 刪除一個字符 替換一個字符 0 = word1.length, word2.length = 500 word1 和 word2 由小寫英文字母組成 面對這道算法題目,二當家的再次陷入了沉思。 編

    2024年02月12日
    瀏覽(26)
  • 算法leetcode|62. 不同路徑(rust重拳出擊)

    算法leetcode|62. 不同路徑(rust重拳出擊)

    一個機器人位于一個 m x n 網(wǎng)格的左上角 (起始點在下圖中標記為 “Start” )。 機器人每次只能向下或者向右移動一步。機器人試圖達到網(wǎng)格的右下角(在下圖中標記為 “Finish” )。 問總共有多少條不同的路徑? 1 = m, n = 100 題目數(shù)據(jù)保證答案小于等于 2 * 10 9 面對這道算法

    2024年02月17日
    瀏覽(23)
  • 算法leetcode|54. 螺旋矩陣(rust重拳出擊)

    算法leetcode|54. 螺旋矩陣(rust重拳出擊)

    給你一個 m 行 n 列的矩陣 matrix ,請按照 順時針螺旋順序 ,返回矩陣中的所有元素。 m == matrix.length n == matrix[i].length 1 = m, n = 10 -100 = matrix[i][j] = 100 面對這道算法題目,二當家的再次陷入了沉思。 可以每次循環(huán)移動一步,判斷移到邊界就變換方向,巧用數(shù)組可以減少邏輯判斷

    2024年02月08日
    瀏覽(20)
  • 算法leetcode|55. 跳躍游戲(rust重拳出擊)

    給定一個非負整數(shù)數(shù)組 nums ,你最初位于數(shù)組的 第一個下標 。 數(shù)組中的每個元素代表你在該位置可以跳躍的最大長度。 判斷你是否能夠到達最后一個下標。 1 = nums.length = 3 * 10 4 0 = nums[i] = 10 5 面對這道算法題目,二當家的再次陷入了沉思。 可能想到要暴力嘗試或者是雙循環(huán)

    2024年02月08日
    瀏覽(49)
  • 算法leetcode|85. 最大矩形(rust重拳出擊)

    算法leetcode|85. 最大矩形(rust重拳出擊)

    給定一個僅包含 0 和 1 、大小為 rows x cols 的二維二進制矩陣,找出只包含 1 的最大矩形,并返回其面積。 rows == matrix.length cols == matrix[0].length 1 = row, cols = 200 matrix[i][j] 為 ‘0’ 或 ‘1’ 面對這道算法題目,二當家的再次陷入了沉思。 要不是剛做過 84. 柱狀圖中最大的矩形 這

    2024年02月08日
    瀏覽(17)
  • 算法leetcode|89. 格雷編碼(rust重拳出擊)

    n 位格雷碼序列 是一個由 2 n 個整數(shù)組成的序列,其中: 每個整數(shù)都在范圍 [0, 2 n - 1] 內(nèi)(含 0 和 2 n - 1) 第一個整數(shù)是 0 一個整數(shù)在序列中出現(xiàn) 不超過一次 每對 相鄰 整數(shù)的二進制表示 恰好一位不同 ,且 第一個 和 最后一個 整數(shù)的二進制表示 恰好一位不同 給你一個整數(shù)

    2024年02月04日
    瀏覽(29)
  • 算法leetcode|71. 簡化路徑(rust重拳出擊)

    給你一個字符串 path ,表示指向某一文件或目錄的 Unix 風格 絕對路徑 (以 \\\'/\\\' 開頭),請你將其轉(zhuǎn)化為更加簡潔的規(guī)范路徑。 在 Unix 風格的文件系統(tǒng)中,一個點( . )表示當前目錄本身;此外,兩個點 ( .. ) 表示將目錄切換到上一級(指向父目錄);兩者都可以是復雜相

    2024年02月12日
    瀏覽(19)
  • 算法leetcode|75. 顏色分類(rust重拳出擊)

    給定一個包含紅色、白色和藍色、共 n 個元素的數(shù)組 nums , 原地 對它們進行排序,使得相同顏色的元素相鄰,并按照紅色、白色、藍色順序排列。 我們使用整數(shù) 0 、 1 和 2 分別表示紅色、白色和藍色。 必須在不使用庫內(nèi)置的 sort 函數(shù)的情況下解決這個問題。 n == nums.length

    2024年02月10日
    瀏覽(16)
  • 算法leetcode|65. 有效數(shù)字(rust重拳出擊)

    算法leetcode|65. 有效數(shù)字(rust重拳出擊)

    有效數(shù)字 (按順序)可以分成以下幾個部分: 一個 小數(shù) 或者 整數(shù) (可選)一個 \\\'e\\\' 或 \\\'E\\\' ,后面跟著一個 整數(shù) 小數(shù) (按順序)可以分成以下幾個部分: (可選)一個符號字符( \\\'+\\\' 或 \\\'-\\\' ) 下述格式之一: 至少一位數(shù)字,后面跟著一個點 \\\'.\\\' 至少一位數(shù)字,后面跟著一個

    2024年02月15日
    瀏覽(20)
  • 算法leetcode|91. 解碼方法(rust重拳出擊)

    一條包含字母 A-Z 的消息通過以下映射進行了 編碼 : 要 解碼 已編碼的消息,所有數(shù)字必須基于上述映射的方法,反向映射回字母(可能有多種方法)。例如, \\\"11106\\\" 可以映射為: \\\"AAJF\\\" ,將消息分組為 (1 1 10 6) \\\"KJF\\\" ,將消息分組為 (11 10 6) 注意,消息不能分組為 (1 11 06) ,因

    2024年02月05日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包