309. 買賣股票的最佳時機含冷凍期(leetcode) 動態規劃思想

文章目錄

  • 前言
  • 一、題目分析
  • 二、算法原理
    • 1.狀態表示
    • 2.狀態轉移方程
    • 3.初始化+邊界條件
    • 4.填表順序
    • 5.返回值是什么
  • 三、代碼實現
  • 總結


前言

在本文章中,我們將要詳細介紹一下Leetcode中買賣股票的最佳時機含冷凍期相關的內容,本題采用動態規劃的思想解決

一、題目分析

在這里插入圖片描述

二、算法原理

1.狀態表示

列出dp表,dp表中值的含義是什么
? ?dp[i]表示第i天之后此時的最大利潤
由于第i天不確定具體狀態,多狀態dp問題
? ? 🌟 .dp[i][0]:手中有股票沒有賣出,我們簡單稱為買入狀態,此時的最大利潤
? ? 🌟 .dp[i][1]:處于冷凍期,無法購買股票,我們稱為冷凍期,此時的最大利潤
? ? 🌟 .dp[i][2]:手中沒有股票,也不處于冷凍期,此時的最大利潤

2.狀態轉移方程

根據最近一步劃分問題

根據狀態表示,我們可以劃分為9種不同的轉換
? ? 🌟 .(i-1)天處于買入狀態,第i天處于買入狀態:這個是可以的,這一天啥也不干
? ? 🌟 .(i-1)天處于買入狀態,第i天處于冷凍期狀態:這個可以,就是這天把股票賣了,賺了錢,需要加上prices[i]的值(涉及利潤)
? ? 🌟 .(i-1)天處于買入狀態,第i天處于正常狀態:這個不可以,你手中有股票,不處于正常狀態,即使把股票賣了,也得先經過冷凍期才可以
? ? 🌟 .(i-1)天處于冷凍期狀態,第i天處于冷凍期狀態:這個不可以,冷凍期只能有一天
? ? 🌟 .(i-1)天處于冷凍期狀態,第i天處于買入狀態:這個不可以,冷凍期是不能買股票的
? ? 🌟 .(i-1)天處于冷凍期狀態,第i天處于正常狀態:這個可以,經過一天之后進入正常狀態。
? ? 🌟 .(i-1)天處于正常狀態,第i天處于正常狀態:這個可以,感覺這個股票不好,等一等再買
? ? 🌟 .(i-1)天處于正常狀態,第i天處于買入狀態:這個可以,可以進行購買股票,買股票需要花錢,需要減去股票的錢pricesi
? ? 🌟 .(i-1)天處于正常狀態,第i天處于冷凍期狀態:這個不可以,冷凍期是在股票賣了之后才進入的

下面有個簡圖描述上面信息
在這里插入圖片描述
箭頭方向表示:從(i-1)天到第i天

3.初始化+邊界條件

本題初始化比較簡單,不需要創建虛擬節點了
dp[0][0]=-prices[0];這一天只買了股票,買是需要花錢的
dp[0][1]=0;買了有緊接著賣了,沒有利潤
dp[0][2]=0;

4.填表順序

從左往右

5.返回值是什么

最后一天的最大收益有兩種可能,而且一定是“不持有”狀態下的兩種可能,把這兩種“不持有”比較一下大小,返回即可
max(dp[n-1][1],dp[n–1][2]);

三、代碼實現

class Solution {
public:int maxProfit(vector<int>& prices) {//建表int n=prices.size();if(n==0){return 0;}vector<vector<int>>dp (n,vector<int>(3));//初始化dp[0][0]=-prices[0];dp[0][1]=0;dp[0][2]=0;//填表for(int i=1;i<n;i++){dp[i][0]=max(dp[i-1][0],dp[i-1][2]-prices[i]);dp[i][1]=dp[i-1][0]+prices[i];dp[i][2]=max(dp[i-1][2],dp[i-1][1]);}//返回值return max(dp[n-1][1],dp[n-1][2]);}
};

在這里插入圖片描述

總結

以上就是我們對本題詳細介紹,希望對大家的學習有所幫助,僅供參考 如有錯誤請大佬指點我會盡快去改正 歡迎大家來評論~~😘😘😘😘

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

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

相關文章

uniapp藍牙傳輸中文亂碼問題

uniapp藍牙傳輸中文亂碼問題 0 現狀 傳輸數字和字母的json字符串都可以解析&#xff0c;有個中文的硬件那邊就解析不了&#xff0c;替換一下發數據的處理函數即可 1 原先字符串轉化函數 const stringToBytes (msg) > {const buffer new ArrayBuffer(msg.length)const …

eclipse中一些文件的作用

.idea文件夾 .idea和.settings文件夾是IntelliJ IDEA的配置文件夾&#xff0c;用于存儲項目的配置信息。這些文件夾中包含了許多XML文件&#xff0c;這些XML文件包含了項目的各種配置信息&#xff0c;例如編譯選項、運行配置、代碼樣式、版本控制等等。 包含了一些名為modules.…

PyQt6 QDateEdit日期控件

?鋒哥原創的PyQt6視頻教程&#xff1a; 2024版 PyQt6 Python桌面開發 視頻教程(無廢話版) 玩命更新中~_嗶哩嗶哩_bilibili2024版 PyQt6 Python桌面開發 視頻教程(無廢話版) 玩命更新中~共計39條視頻&#xff0c;包括&#xff1a;2024版 PyQt6 Python桌面開發 視頻教程(無廢話…

多數元素算法(leetcode第169題)

題目描述&#xff1a; 給定一個大小為 n 的數組 nums &#xff0c;返回其中的多數元素。多數元素是指在數組中出現次數 大于 ? n/2 ? 的元素。你可以假設數組是非空的&#xff0c;并且給定的數組總是存在多數元素。示例 1&#xff1a;輸入&#xff1a;nums [3,2,3] 輸出&am…

Python:可以做什么?

簡介 Python是一種高級編程語言&#xff0c;因其簡單易學、代碼可讀性強和擁有豐富的標準庫而廣受歡迎。Python可以用于許多不同領域&#xff0c;主要包括&#xff1a; 數據分析與數據科學&#xff1a;Python有強大的數據處理和分析庫&#xff0c;如Pandas、NumPy和SciPy&…

空中消防員:無人機森林防火應用全面升級

森林是生態系統的重要組成部分&#xff0c;也是人類得以生存的關鍵。我國森林面積廣大&#xff0c;存在火災頻發的困境。提升森林火災防控能力是維護生態平衡、保護資源和保障人民生命安全的必要步驟。隨著無人機技術的發展&#xff0c;其在無人機森林防火中的應用為傳統巡查工…

Linux PSI-----Pressure Stall information

PSI——壓力阻塞信息 當CPU、memory或IO設備處于競爭狀態&#xff0c;業務負載會遭受時延毛刺、吞吐量降低&#xff0c; 及面臨OOM的風險。 如果沒有一種準確的方法度量系統競爭程度&#xff0c;則有兩種后果&#xff1a;一種是用戶過于節制&#xff0c; 未充分利用系統資源&…

Mybatis與Spring結合深探——MapperFactoryBean的奧秘

文章目錄 前言MapperFactoryBean的工作原理底層實現剖析MapperFactoryBean的checkDaoConfig()方法總結 MapperFactoryBean的getObject()方法 思考聯想后續 系列相關相關文章究竟FactoryBean是什么&#xff1f;深入理解Spring的工廠神器超硬核解析Mybatis動態代理原理&#xff0…

lv12 開發板啟動過程

1 開發板啟動過程 1.1 回顧芯片手冊第三章內存映射 對于arm來說&#xff0c;不是給它多大的內存都能讀。尋址空間&#xff08;地址空間&#xff09;讀寫范圍是有限的&#xff0c;尋址空間的大小與地址總線寬度有關&#xff0c;如32位&#xff0c;地址空間4G&#xff08;2^32)…

NVMe over Fabrics with SPDK with iRDMA總結 - 3

6.0 Configure and Test NVMe over Fabrics Host(s) to Connect to SPDK Target配置和測試 NVMe over Fabrics 主機以連接 SPDK 目標機 The SPDK NVMe-oF target system is spec compliant, which allows for the use of either an SPDK host or Linux Kernel host to co…

【C語言基礎】嵌入式面試經典題(C語言篇)----有新的內容會及時補充、更新!

&#x1f4e2;&#xff1a;如果你也對機器人、人工智能感興趣&#xff0c;看來我們志同道合? &#x1f4e2;&#xff1a;不妨瀏覽一下我的博客主頁【https://blog.csdn.net/weixin_51244852】 &#x1f4e2;&#xff1a;文章若有幸對你有幫助&#xff0c;可點贊 &#x1f44d;…

Mac虛擬機CrossOver23破解版下載和許可證下載

CrossOver Mac Mac 和 Windows 系統之間的兼容工具。使 Mac 操作系統的用戶可以運行 Windows 系統的應用&#xff0c;從辦公軟件、實用工具、游戲到設計軟件&#xff0c; 您都可以在 Mac 程序和 Windows 程序之間隨意切換。 系統要求 運行macOS的基于Intel或Apple Silicon 的…

springboot項目加載配置文件失敗

問題 在使用springboot打成jar以后&#xff0c;需要文件加載一個redisson-cluster的配置文件。配置文件是在jar的同級目錄。啟動時卻總是加載jar中的配置文件&#xff0c;而外部配置文件卻不加載看下配置&#xff1a;spring:redis:redisson:# redis配置位置file: classpath:red…

lcx iptables rinetd 三個端口轉發流量分析

lcx流量分析 環境搭建 本機 &#xff1a;192.168.0.52 win7 &#xff1a; 192.168.0.247 10.0.0.3 win10&#xff1a; 10.0.0.10 win7 Lcx.exe -listen 7777 4444win10 Lcx.exe -slave 10.0.0.3 7777 127.0.0.1 3389然后使用遠程軟件連接 連的是192.168.0.247的4444 端口 …

基于Pytorch框架深度學的垃圾分類智能識別系統

歡迎大家點贊、收藏、關注、評論啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代碼。 文章目錄 一項目簡介 二、功能三、系統四. 總結 一項目簡介 垃圾分類智能識別系統是一種基于深度學習技術的智能系統&#xff0c;用于對垃圾進行分類和識別。它使用Pytorch框架…

【電路筆記】-壓敏電阻

壓敏電阻 文章目錄 壓敏電阻1、概述2、交流波形瞬變3、抗靜電能力4、特性曲線5、壓敏電阻電容值6、金屬氧化物壓敏電阻7、壓敏電阻應用8、總結 壓敏電阻是一種無源兩端固態半導體器件&#xff0c;用于為電氣和電子電路提供保護。 1、概述 與提供過電流保護的保險絲或斷路器不同…

Redis高效恢復策略:內存快照與AOF

第1章&#xff1a;Redis宕機恢復的重要性和挑戰 大家好&#xff0c;我是小黑。今天咱們來聊聊Redis宕機后的恢復策略。想象一下&#xff0c;你的網站突然宕機了&#xff0c;所有的數據都飄了&#xff0c;這種情況下&#xff0c;快速恢復數據就顯得尤為重要。Redis作為一個高性…

Python---自定義模塊

1、什么是自定義模塊 在Python中&#xff0c;模塊一共可以分為兩大類&#xff1a;內置系統模塊 和 自定義模塊 模塊的本質&#xff1a;在Python中&#xff0c;模塊的本質就是一個Python的獨立文件&#xff08;后綴名.py&#xff09;&#xff0c;里面可以包含全局變量、函數以…

大廠算法指南:優選算法 ——雙指針篇(下)

大廠算法指南&#xff1a;優選算法 ——雙指針篇&#xff08;上&#xff09; 前言&#xff1a;雙指針簡介一、[611. 有效三角形的個數](https://leetcode.cn/problems/valid-triangle-number/)1.1 算法思路&#xff08;排序 雙指針&#xff09;1.2 代碼實現 二、[LCR 179. 查找…

[GPT]Andrej Karpathy微軟Build大會GPT演講(下)--該如何使用GPT助手

該如何使用GPT助手--將GPT助手模型應用于問題 現在我要換個方向,讓我們看看如何最好地將 GPT 助手模型應用于您的問題。 現在我想在一個具體示例的場景里展示。讓我們在這里使用一個具體示例。 假設你正在寫一篇文章或一篇博客文章,你打算在最后寫這句話。 加州的人口是阿拉…