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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LeetCode-动态规划基础题-509. 斐波那契数

發布時間:2025/4/5 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode-动态规划基础题-509. 斐波那契数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

描述

題目如下:
509. 斐波那契數
斐波那契數,通常用 F(n) 表示,形成的序列稱為 斐波那契數列 。該數列由 0 和 1 開始,后面的每一項數字都是前面兩項數字的和。也就是:

F(0) = 0,F(1) = 1
F(n) = F(n - 1) + F(n - 2),其中 n > 1
給你 n ,請計算 F(n) 。

思路一:遞歸

時間復雜度:O(2^n)
空間復雜度:O(n)

class Solution { public:int fib(int n) {if(n==0) return 0;if(n==1) return 1;return fib(n-1)+fib(n-2);} };

思路二:動態規劃

時間復雜度:O(n)
空間復雜度:O(n)

class Solution { public:int fib(int n) {if(n==0) return 0;if(n==1) return 1;// return fib(n-1)+fib(n-2);vector<int> dp(n+1); //用來存每次動態規劃之后的值dp[0]=0;dp[1]=1; //動態規劃的初始條件for(int i=2;i<dp.size();i++){dp[i] = dp[i-1]+dp[i-2];}return dp[n];} };

優化一下代碼

只需要維護兩個值,不需要整個序列
時間復雜度:O(n)
空間復雜度:O(1)

class Solution { public:int fib(int n) {if(n==0) return 0;if(n==1) return 1;// return fib(n-1)+fib(n-2);vector<int> dp(2); //用來存每次動態規劃之后的值dp[0]=0;dp[1]=1; //動態規劃的初始條件for(int i=2;i<=n;i++){// dp[i] = dp[i-1]+dp[i-2];int sum=dp[0]+dp[1];dp[0]= dp[1];dp[1]=sum;}return dp[1];} };

總結

以上是生活随笔為你收集整理的LeetCode-动态规划基础题-509. 斐波那契数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。