每日OJ題_斐波那契dp①_力扣1137. 第 N 個泰波那契數

目錄

動態規劃dp算法原理

力扣1137. 第 N 個泰波那契數

解析代碼1

解析代碼2


動態規劃dp算法原理

????????動態規劃(Dynamic Programming)算法的核心思想是:將大問題劃分為小問題進行解決,從而一步步獲取最優解的處理算法

????????動態規劃算法與分治算法類似,其基本思想也是將待求解問題分解成若干個子問題,先求解子問題,然后從這些子問題的解得到原問題的解。

????????與分治法不同的是,適合于用動態規劃求解的問題,經分解得到的子問題往往不是互相獨立的(即下一個子階段的求解是建立在上一個子階段的解的基礎上)。

(除此斐波那契dp外還有其它類型的dp在后面會更新。)

動態規劃算法解決問題的分類:

計數

有多少種方式走到右下角?/?有多少種方法選出k個數使得和是sum

求最大值/最小值

從左上角走到右下角路徑的最大數字和最長上升子序列長度

求存在性

取石子游戲,先手是否必勝 /?能不能取出k? 個數字使得和是 sum

動態規劃dp算法一般步驟:

  1. 確定狀態表示(dp[ i ] 表示什么,一般以 i 位置為起點或結尾分析,化成子問題)
  2. 狀態轉移方程(斐波那契數列的狀態轉移方程為:dp[i] = dp[i-1] + dp[i-2])
  3. 初始化(斐波那契數列初始化可以為dp[0] = 0, dp[1] = 1;)
  4. 填表順序(斐波那契數列從左往右填)
  5. 返回值(如果斐波那契數列要求是第 n 個斐波那契數,返回dp[ n ] 即可)

力扣1137. 第 N 個泰波那契數

1137. 第 N 個泰波那契數

難度 簡單

泰波那契序列?Tn?定義如下:?

T0?= 0, T1?= 1, T2?= 1, 且在 n >= 0?的條件下 Tn+3?= Tn?+ Tn+1?+ Tn+2

給你整數?n,請返回第 n 個泰波那契數?Tn?的值。

示例 1:

輸入:n = 4
輸出:4
解釋:
T_3 = 0 + 1 + 1 = 2
T_4 = 1 + 1 + 2 = 4

示例 2:

輸入:n = 25
輸出:1389537

提示:

  • 0 <= n <= 37
  • 答案保證是一個 32 位整數,即?answer <= 2^31 - 1
class Solution {
public:int tribonacci(int n) {}
};

解析代碼1

簡單的DP,根據題目已經得到狀態轉移方程了:

class Solution {
public:int tribonacci(int n) {if(n <= 1) // 處理邊界return n;vector<int> dp(n+1, 0);dp[1] = dp[2] = 1;for(int i = 3; i <= n; ++i){dp[i] = dp[i-1] + dp[i-2] + dp[i-3];}return dp[n];}
};

解析代碼2

????????滾動數組對解法1進行空間上的優化,后面類似的空間優化就不寫了,因為筆試沒用,面試能講出來就行。

class Solution {
public:int tribonacci(int n) {if(n <= 1) // 處理邊界return n;int a = 0, b = 1, c = 1, d = 1; // 滾動數組思想優化空間for(int i = 3; i <= n; ++i){d = a + b + c;a = b;b = c;c = d;}return d;}
};

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

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

相關文章

快速冪(求解原理+例題)

目錄 反復平方法&#xff08;快速冪&#xff09;&#xff1a; 代碼&#xff1a; 例題&#xff1a;快速冪求逆元 作用&#xff1a; 快速求出 的結果。 時間復雜度&#xff1a; O(logk) 如果使用一般做法&#xff0c;從1循環到k&#xff0c;時間復雜度是O(k) 反復平方法&am…

低代碼流程引擎實戰:讓表單字段成為流程節點審批人的得力助手!

在現代企業的日常運營中&#xff0c;流程審批是保障工作高效、規范進行的關鍵環節。隨著企業對于靈活性和高效性的需求不斷增長&#xff0c;傳統的固定審批人設置已無法滿足多變的業務場景。在JVS低代碼中“設置流程節點審批人為表單字段”這一功能&#xff0c;旨在通過動態配置…

C#入門:簡單數據類型和強制類型轉換

本文由 簡悅 SimpRead 轉碼&#xff0c; 原文地址 mp.weixin.qq.com 本期來講講 unity 的腳本語言 —C#&#xff0c;C# 的簡單數據類型及范圍和強制類型轉化的方法。這可是 unity 游戲開發必備技能。 1. 簡單數據類型 各個類型的范圍&#xff1a; byte -> System.Byte (字節…

黑馬點評-短信登錄業務

原理 模型如下 nginx nginx基于七層模型走的事HTTP協議&#xff0c;可以實現基于Lua直接繞開tomcat訪問redis&#xff0c;也可以作為靜態資源服務器&#xff0c;輕松扛下上萬并發&#xff0c; 負載均衡到下游tomcat服務器&#xff0c;打散流量。 我們都知道一臺4核8G的tomca…

網絡問題排查必備利器:Pingmesh

背景 當今的數字化世界離不開無處不在的網絡連接。無論是日常生活中的社交媒體、電子商務&#xff0c;還是企業級應用程序和云服務&#xff0c;我們對網絡的依賴程度越來越高。然而&#xff0c;網絡的可靠性和性能往往是一個復雜的問題&#xff0c;尤其是在具有大規模分布式架…

21.Prometheus的查詢數據類API

平凡也就兩個字: 懶和惰; 成功也就兩個字: 苦和勤; 優秀也就兩個字: 你和我。 跟著我從0學習JAVA、spring全家桶和linux運維等知識,帶你從懵懂少年走向人生巔峰,迎娶白富美! 關注微信公眾號【 IT特靠譜 】,每天都會分享技術心得~ 1.數據查詢類API 1.1.API前綴路徑說明 …

lanqiao:42點

題解&#xff1a; 1.首先&#xff0c;把字符轉成數字。 2.創建二維數組存放枚舉的結果&#xff0c;第一行一個數字13&#xff1b;第二行4個數字&#xff0c;分別是13和1的加減乘除&#xff1b;第三行16個數字&#xff0c;分別是第二行的每個數和12加減乘除的結果&#xff1b;…

基于SpringBoot的在線拍賣系統

目錄 1、 前言介紹 2、主要技術 3、系統流程和邏輯 4、系統結構設計 5、數據庫設計表 6、運行截圖(部分) 6.1管理員功能模塊 6.2用戶功能模塊 6.3前臺首頁功能模塊 7、源碼獲取 基于SpringBoot的在線拍賣系統錄像 1、 前言介紹 隨著社會的發展&#xff0c;社會的各行…

安卓玩機工具推薦----ADB狀態讀寫分區 備份分區 恢復分區 查看分區號 工具操作解析

在以往玩機過程中。很多機型備份分區 備份固件需要借助adb手動指令或者第三方手機軟件或者特定的一些工具來操作。有些朋友需要查看當前機型分區名稱和對應的分區號。此類操作我前面的博文專門說過對應的adb指令。但有些界面化的工具比較方便簡單。 相關分區同類博文&#xff…

【C++】每周一題——2024.3.3(手滑再再寫一篇)

題目 Cpp 【問題描述】 求N個字符串的最長公共子串&#xff0c;2 < N&#xff1c;&#xff1d;20&#xff0c;字符串長度不超過255。 例如&#xff1a;N&#xff1d;3&#xff0c;由鍵盤依次輸入三個字符串為 What is local bus? Name some local buses. local bus is a h…

SpringBoot源碼解讀與原理分析(三十七)SpringBoot整合WebMvc(二)DispatcherServlet的工作全流程

文章目錄 前言12.4 DispatcherServlet的工作全流程12.4.1 DispatcherServlet#service12.4.2 processRequest12.4.3 doService12.4.3.1 isIncludeRequest的判斷12.4.3.2 FlashMapManager的設計 12.4.4 doDispatch12.4.4.1 處理文件上傳請求12.4.4.2 獲取可用的Handler&#xff0…

sscanf 函數的用法

sscanf 函數是 C 語言標準庫 <stdio.h> 中的一個函數&#xff0c;用于按照指定的格式從一個字符串中讀取輸入。它的用法類似于 scanf 函數&#xff0c;但是 sscanf 從字符串中讀取輸入&#xff0c;而不是從標準輸入&#xff08;鍵盤&#xff09;中讀取輸入。 以下是 ssc…

優優嗨聚集團:美團代運營服務,商家增長的新引擎

在當今數字化時代&#xff0c;線上平臺已成為商家拓展業務、提升品牌影響力的重要渠道。美團作為國內領先的本地生活服務平臺&#xff0c;擁有龐大的用戶群體和豐富的商業資源。然而&#xff0c;對于許多商家而言&#xff0c;如何在美團平臺上進行有效運營&#xff0c;實現業務…

Redis做分布式鎖如何處理超時時間?

在使用Redis實現分布式鎖時&#xff0c;處理超時時間是非常重要的&#xff0c;以確保在獲取鎖的客戶端在一定時間內未能完成任務時&#xff0c;鎖能夠自動釋放&#xff0c;避免造成死鎖或長時間的阻塞。下面是一種處理超時時間的方法&#xff1a; 獲取鎖時設置超時時間&#xf…

雙線服務器有哪些安全防御措施?

雙線服務器的出現給企業帶來了更廣泛的業務發展&#xff0c;用戶不再是固定的群體&#xff0c;而是有了一定的選擇性&#xff0c;服務器的性能與可靠性進行了增強&#xff0c;使網絡的運行速度變得更加流暢&#xff0c;給用戶帶來了良好的體驗感。 今天我們主要就來聊一聊雙線服…

【IOS】啟動報錯Cannot launch ‘/private/var/containers/Bundle/Application/....‘

問題 IOS項目啟動報錯Cannot launch ‘/private/var/containers/Bundle/Application/***.app’: Sending qLaunchSuccess packet failed 或者類似報錯問題 無法啟動launch的 解決 問題定位 我是在操作期間更換了應用的簽名證書 也就是Signing & Capablities -> Sign…

【LeetCode:232. 用棧實現隊列 + 棧 | 隊列】

&#x1f680; 算法題 &#x1f680; &#x1f332; 算法刷題專欄 | 面試必備算法 | 面試高頻算法 &#x1f340; &#x1f332; 越難的東西,越要努力堅持&#xff0c;因為它具有很高的價值&#xff0c;算法就是這樣? &#x1f332; 作者簡介&#xff1a;碩風和煒&#xff0c;…

力扣74. 搜索二維矩陣(二分查找)

Problem: 74. 搜索二維矩陣 文章目錄 題目描述思路復雜度Code 題目描述 思路 思路1&#xff1a;映射為一維數組二分查找 1.由于題目矩陣中的元素整體是升序的&#xff0c;我們可以將其放置在一個大小為 m n m \times n mn的一維數組array中進行二分查找 2.對應的映射關系是ar…

NACOS在Windows和Linux下的安裝教程

目錄 1、Windows安裝 1.1、下載安裝包 1.2、解壓 1.3、端口配置 1.4、啟動 1.5、訪問 2、Linux安裝 2.1、安裝JDK 2.2、上傳安裝包 2.3、解壓 2.4、端口配置 2.5、啟動 3、Nacos的依賴 1、Windows安裝 開發階段采用單機安裝即可。 1.1、下載安裝包 在Nacos的Git…