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


文章目錄

  • 70. 爬樓梯:
    • 樣例 1:
    • 樣例 2:
    • 提示:
  • 分析:
  • 題解:
    • rust:
    • go:
    • c++:
    • python:
    • java:


70. 爬樓梯:

假設你正在爬樓梯。需要 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 階臺階來。
  • 這是典型的動態規劃,到初始位置和第一階臺階的方式只有一種,之后到達每一階臺階的發方法總數都可以動態計算得來,即 f(x) = f(x ? 1) + f(x ? 2)
  • 動態規劃方法我覺得很好了,但是由于有規律,用數學的方式計算,當然更快了,另外將前幾項列出來,再結合定義,就會發現,到達每一階臺階的方法總數恰好就是 斐波那契數列
  • 動態規劃只能從 1n 按順序推算,在 n 較大時,效率仍不令人滿意,矩陣快速冪,可以有像二分查找一樣的效率,數學的知識都還給老師了,有興趣的可以去研究一下,能看明白,但是過段時間又會忘記,無奈啊,矩陣快速冪矩陣乘法快速冪 的結合,可以先分別了解,再結合理解。
  • 所以建議一定要把動態規劃優先掌握,其次是快速冪,至于通項公式,數學的方法,很難舉一反三,要具體問題具體分析,說到底還是需要掌握數學知識本身,與君共勉。
  • 最后,爬樓梯當然要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/ 博客原創~


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/36916.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/36916.shtml
英文地址,請注明出處:http://en.pswp.cn/news/36916.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

奧威BI數據可視化工具:報表就是平臺,隨時自助分析

別的數據可視化工具&#xff0c;報表就只是報表&#xff0c;而奧威BI數據可視化工具&#xff0c;一張報表就約等于一個平臺&#xff0c;可隨時展開多維動態自助分析&#xff0c;按需分析&#xff0c;立得數據信息。 奧威BI是一款多維立體分析數據的數據可視化工具。它可以幫助…

電腦xinput1_3.dll丟失的解決方法?哪個解決方法更簡單

最近在打開軟件或者游戲的時候&#xff0c;電腦提示xinput1_3.dll文件丟失的錯誤。這個問題導致我無法運行某些游戲和應用程序。通過一番嘗試和研究&#xff0c;我找到了一些修復xinput1_3.dll文件丟失的方法&#xff0c;并在此分享給大家。 首先&#xff0c;我了解到xinput1_3…

如何使用PHP編寫爬蟲程序

在互聯網時代&#xff0c;信息就像一條無休無止的河流&#xff0c;源源不斷地涌出來。有時候我們需要從Web上抓取一些數據&#xff0c;以便分析或者做其他用途。這時候&#xff0c;爬蟲程序就顯得尤為重要。爬蟲程序&#xff0c;顧名思義&#xff0c;就是用來自動化地獲取Web頁…

NSI45030AT1G LED驅動器方案為汽車外部及內部照明恒流穩流器(CCR)方案

關于線性恒流調節器&#xff08;CCR&#xff09;&#xff1a;是一種用于控制電流的穩定輸出。它通常由一個功率晶體管和一個參考電流源組成。CCR的工作原理是通過不斷調節功率晶體管的導通時間來維持輸出電流的恒定。當輸出電流超過設定值時&#xff0c;CCR會減少功率晶體管的導…

SAP MM學習筆記20- SAP中的英文2 - SD中英文,日語,中文

SD模塊中的英文&#xff0c;日語&#xff0c;中文 對照。 販売管理 日本語英語中國語受注伝票sales order銷售訂單出荷伝票delivery order交貨訂單ピッキングリストpicking list領貨清單シップメント伝票shipment document發運單據出庫確認post goods issue發貨確認請求伝票b…

紅日ATT&CK VulnStack靶場(三)

網絡拓撲 web階段 1.掃描DMZ機器端口 2.進行ssh和3306爆破無果后訪問web服務 3.已知目標是Joomla&#xff0c;掃描目錄 4.有用的目錄分別為1.php 5.configuration.php~中泄露了數據庫密碼 6.administrator為后臺登錄地址 7.直接連接mysql 8.找到管理員表&#xff0c;密碼加密了…

提高學生學習效率的模擬考試系統

在如今競爭激烈的社會環境下&#xff0c;提高學生的學習效率顯得尤為重要。為了幫助學生評估自己的學習水平并提供有針對性的學習建議&#xff0c;開發一款模擬考試系統是非常必要的。 一、學生信息錄入 模擬考試系統首先需要學生信息錄入功能。學生可以通過一個簡單的表單填…

Unity游戲源碼分享-中國象棋Unity5.6版本

Unity游戲源碼分享-中國象棋Unity5.6版本 項目地址&#xff1a; https://download.csdn.net/download/Highning0007/88215699

【c語言】指針進階(超詳細)

文章目錄 ? 指向函數指針數組的指針&#x1f4cc;指向函數指針數組的指針的定義&#x1f4cc;指向函數指針數組的數組指針的使用 ?回調函數&#x1f4cc; 回調函數的定義&#x1f4cc; 回調函數的使用 ?qsort函數&#x1f4cc; qsort函數的作用&#x1f4cc;qsort函數的定義…

【佳佳怪文獻分享】安全人機交互的學習責任分配與自動駕駛應用

標題&#xff1a;Learning Responsibility Allocations for Safe Human-Robot Interaction with Applications to Autonomous Driving 作者&#xff1a;Ryan K. Cosner, Yuxiao Chen, Karen Leung, and Marco Pavone 來源&#xff1a;2023 IEEE International Conference on …

1.1 : DNA 螺旋

概述 脫氧核糖核酸(DNA)是負責在所有生物體和大多數病毒中代代相傳性狀的遺傳物質。DNA由兩條相互纏繞形成雙螺旋的核苷酸鏈組成。DNA 結構的發現是在近一個世紀的時間里逐步發現的,代表了科學史上最著名、最迷人的故事之一。 DNA 結構詳細信息 每條 DNA 鏈均由稱為核苷酸…

安全防御問題

SSL VPN的實現&#xff0c;防火墻需要放行哪些流量&#xff1f; 實現 SSL VPN 時&#xff0c;在防火墻上需要放行以下流量&#xff0c; SSL/TLS 流量&#xff1a;SSL VPN 通過加密通信來確保安全性&#xff0c;因此防火墻需要允許 SSL/TLS 流量通過。一般情況下&#xff0c;SSL…

lua實現http的異步回調

想用lua實現與http服務器的通信&#xff0c;請求一些數據會回來&#xff0c;默認lua.socket.http是同步的&#xff0c;所以想弄一個異步的方式 測試環境 lua 5.1 同步 以下是同步的代碼&#xff0c;其中http.request會被阻塞住的 local function send_request()local res,…

【QT】 Word模板編輯、轉PDF格式

很高興在雪易的CSDN遇見你 ,給你糖糖 歡迎大家加入雪易社區-CSDN社區云 前言 本文分享基于QT進行Word模板編輯以及Word轉PDF的技術,希望對各位小伙伴有所幫助! 感謝各位小伙伴的點贊+關注,小易會繼續努力分享,一起進步! 你的點贊就是我的動力(^U^)ノ~YO 目錄 …

機器學習-特征選擇:如何使用遞歸特征消除算法自動篩選出最優特征?

一、引言 在實際應用中&#xff0c;特征選擇作為機器學習和數據挖掘領域的重要環節&#xff0c;對于提高模型性能和減少計算開銷具有關鍵影響。特征選擇是從原始特征集中選擇最相關和最具區分力的特征子集&#xff0c;以提高模型的泛化能力和可解釋性。 特征選擇在實踐中具有以…

計算機競賽 python opencv 深度學習 指紋識別算法實現

1 前言 &#x1f525; 優質競賽項目系列&#xff0c;今天要分享的是 &#x1f6a9; python opencv 深度學習 指紋識別算法實現 &#x1f947;學長這里給一個題目綜合評分(每項滿分5分) 難度系數&#xff1a;3分工作量&#xff1a;4分創新點&#xff1a;4分 該項目較為新穎…

什么是Java中的觀察者模式?

Java中的觀察者模式是一種設計模式&#xff0c;它允許一個對象在狀態發生改變時通知它的所有觀察者。這種模式在許多情況下都非常有用&#xff0c;例如在用戶界面中&#xff0c;當用戶與界面交互時&#xff0c;可能需要通知其他對象。 下面是一個簡單的Java代碼示例&#xff0…

代碼質量檢查工具SonarQube

Devops流水線之SonarQube 文章目錄 Devops流水線之SonarQube1. 軟件功能介紹及用途2. 軟件環境搭建與使用2.1 使用方法2.2 SonarQube相關屬性說明2.3 Sonar配置文件內容說明 3. 使用環節4. 檢查方法 1. 軟件功能介紹及用途 SonarQube是一個用于代碼質量管理的開源平臺&#xf…

element-ui table表格,根據縮放自適應

安裝依賴 npm install af-table-columnmain.js 中引入依賴&#xff0c; import Vue from vue import ElementUI from element-ui //需要按需引入&#xff0c;先引入vue并引入element-ui import AFTableColumn from af-table-column Vue.use(AFTableColumn)demo樣式&#xff1…

Python Opencv實踐 - 圖像放射變換

import cv2 as cv import numpy as np import matplotlib.pyplot as pltimg cv.imread("../SampleImages/pomeranian.png", cv.IMREAD_COLOR) rows,cols img.shape[:2] print(img.shape[:2])#使用getAffineTransform來獲得仿射變換的矩陣M #cv.getAffineTransform(…