c語言斐波那契數列_劍指Offer-10-I.斐波那契數列

6fe6c195a00e7b4ee69f3a64f56d0e6d.png

題目

題目描述

寫一個函數,輸入 n ,求斐波那契(Fibonacci)數列的第 n 項。斐波那契數列的定義如下:

F(0) = 0, F(1) = 1
F(N) = F(N - 1) + F(N - 2), 其中 N > 1.

斐波那契數列由 0 和 1 開始,之后的斐波那契數就是由之前的兩數相加而得出。
答案需要取模 1e9+7(1000000007),如計算初始結果為:1000000008,請返回 1。

示例1

輸入:n = 2輸出:1

示例2

輸入:n = 5輸出:5

題解

遞歸

把f(n) 拆解 為f(n-1)和f(n-2)遞歸計算,以f(1)和f(0)為終止條件。
大量重復遞歸計算,會直接超時。時間復雜度:O($2^n$)空間復雜度:O(n)
class Solution:def fib(self, n: int) -> int:if n <= 0:return nreturn self.fib(n-1) + self.fib(n-2)

動態規劃

  • 狀態定義:dp為一維數組,dp[i]為斐波那契數列的第i個值。
  • 轉移方程:dp[i] = dp[i-1] + dp[i-2]。
  • 初始狀態:dp[0] = 0, dp[1] = 1。
時間復雜度:O(n),循環n次,每次O(1)。空間復雜度:O(n),dp[n]占用O(n)。
class Solution:def fib(self, n: int) -> int:if n <= 0:return ndp = []dp.append(0)dp.append(1)for i in range(2, n+1):dp_tmp = (dp[i-1] + dp[i-2]) % 1000000007dp.append(dp_tmp)return dp[n]

動態規劃(空間優化)

利用 輔助變量使a, b 交替前進,節省了dp[]列表空間。 時間復雜度:O(n),循環n次,每次O(1)。空間復雜度:O(1),變量占用O(1)。
class Solution:def fib(self, n: int) -> int:a, b = 0, 1for _ in range(n):a, b = b, a + breturn a % 1000000007

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

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

相關文章

mysql 導入 mssql_MySQL(csv,text)導入mssql使用方法

MySQL(csv,text)導入mssql是非常的簡單了但是在導入過程中會碰到text字段問題了&#xff0c;下面我們就來看一篇關于MySQL(csv,text)導入mssql使用方法吧&#xff0c;具體的操作細節如下所示。分兩步處理&#xff0c;第一步是將csv導入到mysql。沒有使用mssql自帶客戶端的導入功…

c# mvvm模式獲取當前窗口_AWTK-MVVM 介紹

MVVM(Model-View-ViewModel)介紹8.1 分離用戶界面和業務邏輯在開發應用程序時&#xff0c;要把用戶界面和業務邏輯分離開來&#xff0c;這是每個程序員都知道的常識。分離用戶界面和業務邏輯有幾個重要的好處&#xff1a;有利于隔離變化。用戶界面是最容易變化的&#xff0c;易…

【spring cloud】(三)服務降級——Hystrix

各位小伙伴們大家好&#xff0c;歡迎來到這個小扎扎的spring cloud專欄&#xff0c;在這個系列專欄中我對B站尚硅谷陽哥的spring cloud教程進行一個總結&#xff0c;鑒于 看到就是學到、學到就是賺到 精神&#xff0c;這波依然是血賺 ┗|&#xff40;O′|┛ &#x1f4a1;服務…

mysql高級查詢教程_MYSQL高級查詢

實際開發中&#xff0c;經常需要對某些數據進行統計&#xff0c;比如&#xff0c;統計某個字段的最大值、最小值、平均值等。MySQL中&#xff0c;提供了一些函數來實現這些功能聚合函數COUNT()——返回某列的行數SUM()——返回某列值的和AVG()——返回某列的平均值MAX()——返回…

【dubbo】(一) dubbo是什么?

各位小伙伴們大家好&#xff0c;歡迎來到這個小扎扎的dubbo專欄&#xff0c;在這個系列專欄中我對B站尚硅谷雷神的dubbo教程進行一個總結&#xff0c;鑒于 看到就是學到、學到就是賺到 精神&#xff0c;這波依然是血賺 ┗|&#xff40;O′|┛ &#x1f4a1;dubbo知識點速覽&a…

axios安裝_Vue腳手架安裝,與基本語法(干貨)

首先&#xff0c;這篇Vue文章是為了下一篇我整合springbootvue前后分離的小demo&#xff0c;這兩天整理好會上傳哈哈1. Node.js安裝1.1 下載安裝在node.js 官網下載&#xff0c; 根據自己電腦系統安裝&#xff0c;一直點下一步即可1.2 測試安裝是否成功WindowsR打開cmd窗口&…

mysql port range_MySQL 數據庫常見調優方法及參數設置_MySQL

1. 關閉 SELinuxvim /etc/selinux/config 更改 SELINUXenforcing 為 SELINUXdisabled2. 更改 IO Schedule, 對于 SSD 硬盤無需更改echo deadline > /sys/block/sda/queue/scheduler3. 更改 ulimitvim /etc/security/limits.conf* soft nofile 65535* hard nofile 65535roo…

base64 能放數組里面么_數組:總結篇

我們做個總結吧數組理論基礎數組是非常基礎的數據結構&#xff0c;在面試中&#xff0c;考察數組的題目一般在思維上都不難&#xff0c;主要是考察對代碼的掌控能力也就是說&#xff0c;想法很簡單&#xff0c;但實現起來 可能就不是那么回事了。首先要知道數組在內存中的存儲方…

xampp mysql 卸載_卸載Xampp并安裝apache + mysql + php 過程

首先是卸載xampp&#xff0c;打開xampp-control.exe 控制面板&#xff0c;停止apache和mysql服務。如果你是安裝版xampp&#xff0c;可以到如果不是則安裝如下方法。停止服務之后。就需要卸載服務。打開cmd&#xff0c;用sc.exe這個Windows命令開始——運行——cmd.exe&#xf…

python判斷正確錯誤_python錯誤和異常

Python3 錯誤和異常 作為 Python 初學者&#xff0c;在剛學習 Python 編程時&#xff0c;經常會看到一些報錯信息&#xff0c;在前面我們沒有提及&#xff0c;這章節我們會專門介紹。 Python 有兩種錯誤很容易辨認&#xff1a;語法錯誤和異常。 Python assert&#xff08;斷言&…

nodejs mysql 返回json_python向mysql中存儲JSON及Nodejs取出

雖然把JSON數據存入mysql也是比較蛋疼&#xff0c;但是相比使用Nodejs嵌套處理多個mysql查詢并拼接返回數據也算是沒mongo時的一個折中方案了。我使用python拼接了一個json格式的字符串&#xff0c;卻遇到了一些問題1&#xff0c;如果把json數據轉成str存入&#xff0c;那么nod…

17個常用經典數據可視化圖表與冷門圖表

數據可視化是創建信息圖形表示的過程。隨著可視化技術的飛速發展&#xff0c;可以利用強大的可視化工具選擇合適的數據可視化圖表來展示數據。以下專業人士都應該知道的一些最重要的數據可視化圖表。 常見數據可視化圖表 餅圖 餅圖是最常見和最基本的數據可視化圖表之一。餅圖…

python keyerror_盤點Python 初學者最容易犯的10大錯誤!你中招了嗎?

對于新手&#xff0c;初學Python時&#xff0c;總會遇到這樣那樣的報錯&#xff0c;想要弄懂Python錯誤信息的含義可能還不知道怎么做&#xff0c;這里列出了一些比較常見的Python報錯問題&#xff0c;希望對于學習Python的人能夠有些幫助。發現有很多想要學習Python卻不知道如…

mysql index sub part_mysql中的key和index 理解

mysql的key和index多少有點令人迷惑&#xff0c;這實際上考察對數據庫體系結構的了解的。1 key 是數據庫的物理結構&#xff0c;它包含兩層意義&#xff0c;一是約束(偏重于約束和規范數據庫的結構完整性)&#xff0c;二是索引(輔助查詢用的)。包括primary key, unique key, fo…

【spring cloud】(六)消息總線——springcloud Bus

各位小伙伴們大家好&#xff0c;歡迎來到這個小扎扎的spring cloud專欄&#xff0c;在這個系列專欄中我對B站尚硅谷陽哥的spring cloud教程進行一個總結&#xff0c;鑒于 看到就是學到、學到就是賺到 精神&#xff0c;這波依然是血賺 ┗|&#xff40;O′|┛ &#x1f4a1;Bus…

python快速排序代碼_Python實現快速排序算法

原標題&#xff1a;Python實現快速排序算法 Python實現快速排序算法 快速排序算法是一種基于交換的高效的排序算法&#xff0c;由C.R.A.Hoare于1962年提出&#xff0c;是一種劃分交換排序。它采用了一種分治的策略&#xff0c;通常稱其為分治法(Divide and conquer algorithm)。…

docker mysql 生產環境_如何部署Docker MySQL生產環境?

1 前言Docker容器原則上是短暫的&#xff0c;如果容器被刪除或損毀&#xff0c;數據或配置將丟失&#xff0c;所以上個章節部署的MySQL只適合于測試環境&#xff0c;由于生產的需求&#xff0c;本章將使用Docker卷機制持久保存Docker容器中創建的數據。2 最佳實踐2.1 環境配置2…

kali 切換root權限_Ubuntu 被曝嚴重漏洞:切換系統語言 + 輸入幾行命令,就能獲取 root 權限...

公眾號關注 “GitHubDaily”設為 “星標”&#xff0c;帶你了解技術圈內新鮮事&#xff01;來自量子位無需系統密碼&#xff0c;就能添加新的 sudo 用戶、獲取 root 權限&#xff0c;事后還能刪除不留痕跡。這是 GitHub 安全研究員 Kevin Backhouse 發現的一個 Ubuntu 系統大漏…

oracle定義變量sql賦值_ORACLE獲取SQL綁定變量值的方法總結

本文總結一下ORACLE數據庫中如何獲取SQL綁定變量值的方法&#xff0c;在SQL優化調優過程中&#xff0c;經常會用到這方面的知識點。在此梳理、總結一下這方面的知識點&#xff0c;方面日后查找、翻閱。方法1&#xff1a;查詢V$SQLV$SQL視圖中的BIND_DATA字段用來存儲綁定變量的…

transition css_Transition 過渡

1&#xff1a;基本概念在一定時間內平滑的過渡&#xff0c;也就是圓滑的以動畫效果改變css的屬性值。它的過渡可以由鼠標點擊、焦點獲取或者失去、被點擊事件或對元素的改變中觸發&#xff1b;不能主動觸發&#xff0c;只能被動觸發。常用的基本屬性有&#xff1a;Transition-d…