代碼隨想錄刷題第48天

今天來看看股票市場。第一題是買賣股票的最佳時機https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/description/,首先想到了暴力解法,兩層for循環,時間復雜度為n * n,代碼超時了。

class Solution {
public:int maxProfit(vector<int>& prices) {int a = 0;for(int i = 0; i < prices.size(); i++){for (int j = i + 1; j < prices.size(); j++){if (prices[j] > prices[i])a = max(a, prices[j] - prices[i]);}}return a;}
};

看了卡哥思路,發現是用動態規劃解決,上動規五步曲:對于遍歷到的每一天,只有持有股票和不持有股票兩種狀態,即dp[i][0]與dp[i][1]。其中dp[i][0]表示持有股票的最大利潤,dp[i][1]表示不持有股票獲得的最大利潤。若第i天持有股票,則也有兩種情況:第i天前已持有股票,dp[i][0] = dp[i - 1][0];第i天時買入股票,dp[i][0] = - prices[i],dp[i][0]在兩者中取最大值即可。若第i天未持有股票,對應情況相似:第i天前已經不在持有股票了,dp[i][1] = dp[i - 1][1];第i天時賣出股票,dp[i][1] = prices[i] + dp[i - 1][0],dp[i][1]取兩者之間的最大值。根據題意與遞推公式可知,dp[0][0] = -prices[0],dp[0][1] = 0。從前向后遍歷dp數組,得出代碼。

class Solution {
public:int maxProfit(vector<int>& prices) {if (prices.size() == 0) return 0;vector<vector<int>> dp(prices.size(), vector<int> (2));dp[0][1] = 0;dp[0][0] = -prices[0];for (int i = 1; i < prices.size(); i++){dp[i][0] = max(dp[i - 1][0], -prices[i]);dp[i][1] = max(dp[i - 1][1], dp[i - 1][0] + prices[i]);}return max(dp[prices.size() - 1][0], dp[prices.size() - 1][1]);}
};

第二題是買賣股票的最佳時機IIhttps://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/description/,該題中股票可以被多次買出賣出,對于上一題中的dp[i][0]而言,當是第i天買入股票時,dp[i][0] = dp[i - 1][1] - prices[i]。其余代碼均無需改動。

class Solution {
public:int maxProfit(vector<int>& prices) {if (prices.size() == 0) return 0;vector<vector<int>> dp(prices.size(), vector<int>(2));dp[0][0] = -prices[0];dp[0][1] = 0;for (int i = 1; i < prices.size(); i++){dp[i][0] = max(dp[i - 1][0], dp[i - 1][1] - prices[i]);dp[i][1] = max(dp[i - 1][1], dp[i - 1][0] + prices[i]);}return max(dp[prices.size() - 1][0], dp[prices.size() - 1][1]);}
};

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

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

相關文章

如何使用公網地址遠程訪問內網Nacos UI界面查看注冊服務

文章目錄 1. Docker 運行Nacos2. 本地訪問Nacos3. Linux安裝Cpolar4. 配置Nacos UI界面公網地址5. 遠程訪問 Nacos UI界面6. 固定Nacos UI界面公網地址7. 固定地址訪問Plik Nacos是阿里開放的一款中間件,也是一款服務注冊中心&#xff0c;它主要提供三種功能&#xff1a;持久化…

關于gossip協議

Gossip協議&#xff0c;也稱為流言協議&#xff0c;是一種在分布式系統中用于節點之間通信和數據同步的算法。它的設計靈感來自于人類社交中的流言傳播機制&#xff1a;一個人告訴幾個人某個消息&#xff0c;這幾個人再各自告訴其他幾個人&#xff0c;如此反復&#xff0c;最終…

6、wuzhicms代碼審計

wuzhicms代碼審計 前言 安裝環境配置 服務器要求 Web服務器: apache/nginx/iis PHP環境要求:支持php5.2、php5.3、php5.4、php5.5、php5.6、php7.1 (推薦使用5.4或更高版本!) 數據庫要求: Mysql5www/install文件夾即可進入安裝頁面 審計開始 首頁文件index.php&#xff0c…

使用Files工具類中的walkFileTree(Path, FileVisitor)方法對文件進行操作

使用Files工具類中的walkFileTree(Path, FileVisitor)方法&#xff0c;其中需要傳入兩個參數 Path&#xff1a;文件起始路徑FileVisitor&#xff1a;文件訪問器&#xff0c;使用訪問者模式 接口的實現類SimpleFileVisitor有四個方法 preVisitDirectory&#xff1a;訪問目錄前的…

PHP curl 獲取當前請求 header 信息

一、正常 curl 獲取響應結果 1)、curl請求代碼 $url http:://www.baidu.com; $data [param > test]; $ch curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array("content-type:application/json&qu…

kubernetes+prometheus+grafana監控+alertmanager實現qq郵箱報警

prometheus基于kubernetes監控 prometheus對kubernetes的監控 對于Kubernetes而言&#xff0c;我們可以把當中所有的資源分為幾類&#xff1a; 基礎設施層&#xff08;Node&#xff09;&#xff1a;集群節點&#xff0c;為整個集群和應用提供運行時資源容器基礎設施&#xff…

C/C++內存管理及內存泄漏詳解

目錄 C/C內存分布 C語言中動態內存管理方式&#xff1a;malloc/calloc/realloc/free C內存管理方式 new/delete操作內置類型 new和delete操作自定義類型 operator new與operator delete函數 new和delete的實現原理 內置類型 自定義類型 內存泄漏 概念 內存泄漏分類 ?…

180基于matlab的頻率切片小波變換程序(FTWT)

基于matlab的頻率切片小波變換程序&#xff08;FTWT&#xff09;。從一種新的角度出發&#xff0c;通過自由選擇頻率切片函數、引進新尺度參數&#xff0c;在頻率域實現小波變換&#xff0c;該變換能夠很好地刻畫信號各成分之間的相對能量關系。此外&#xff0c;頻率切片小波變…

【InternLM 實戰營筆記】OpenCompass大模型評測

隨著人工智能技術的快速發展&#xff0c; 大規模預訓練自然語言模型成為了研究熱點和關注焦點。OpenAI于2018年提出了第一代GPT模型&#xff0c;開辟了自然語言模型生成式預訓練的路線。沿著這條路線&#xff0c;隨后又陸續發布了GPT-2和GPT-3模型。與此同時&#xff0c;谷歌也…

探討蘋果 Vision Pro 的 AI 數字人形象問題

Personas 的設計模糊性&#xff1a; 部分人認為這種模糊設計可能是出于安全考慮&#x1f6e1;?。安全角度&#xff1a;Personas 代表著你的 AI 數字形象&#xff0c;在創建時&#xff0c;它相當于你的 AVP&#xff08;生物識別掃描器的存在增加了冒充的難度&#xff09;。如果…

40、網絡編程/TCP和UDP通信模型練習20240229

一、使用TCP模型創建服務器和客戶端完成簡單通信。 服務器代碼&#xff1a; #include<myhead.h> #define SER_IP "192.168.32.130" #define SER_PORT 8888 int main(int argc, const char *argv[]) {//1.創建監聽的套接字int sfd-1;sfdsocket(AF_INET,SOCK_S…

解決 MySQL 未運行但鎖文件存在的問題

查看mysql狀態時&#xff0c;顯示錯誤信息"ERROR! MySQL is not running, but lock file (/var/lock/subsys/mysql) exists"。 解決步驟 1、檢查 MySQL 進程是否正在運行 在繼續之前&#xff0c;我們首先需要確定 MySQL 進程是否正在運行。我們可以使用以下命令檢查…

MBD開發專欄介紹

文章目錄 MBD概念MBD工具箱介紹MBD專欄介紹MBD概念 MBD : Model-Based Design,基于模型的設計方法是一種系統開發方法論,即對系統進行建模、分析、驗證,然后基于模型自動生成代碼、測試用例和文檔的設計開發過程MBD采用的是基于自然語言和圖形語言的雙重建模方式,讓模型與用…

港中文聯合MIT提出超長上下文LongLoRA大模型微調算法

論文名稱&#xff1a; LongLoRA: Efficient Fine-tuning of Long-Context Large Language Models 文章鏈接&#xff1a;https://arxiv.org/abs/2309.12307 代碼倉庫&#xff1a; https://github.com/dvlab-research/LongLoRA 現階段&#xff0c;上下文窗口長度基本上成為了評估…

算法修煉-動態規劃之路徑問題(1)

62. 不同路徑 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a;選定一個網格為終點&#xff0c;走到這個網格的所有走法就是這個網格的上面一個網格的所有走法加上這個網格左邊一個網格的所有走法&#xff0c;然后做好初始化工作就行。 class Solution { public:int…

MATLAB環境下基于偏置場校正的改進模糊c-均值聚類圖像分割算法

基于聚類的分割方法是以統計學為基礎提出的一種分割方法。其實質是通過計算像素與每一類聚類中心的歐氏距離來判定像素與每一類聚類中心的相似性&#xff0c;距離近就說明像素與聚類中心相似性大&#xff0c;反之相似性小。基于一定標準下的相似性自動劃分成若干個子集(類)&…

markdown筆記(自用)

一.標題語法#空格&#xff0c;幾個#就是幾級標題 四級標題<H> 二.段落語法 用空白行分開 你好 三.換行 在一行的末尾添加兩個或多個空格&#xff0c;然后 v vvvvv 按回車鍵,即可創建一個換行()。 換行與段落的區別在于換行后兩行是挨著的&#xff0c;而段落之間有一…

項目預備知識

導入兩個頭文件 #include <graphics.h> // 引入 EasyX 的圖形庫頭文件 #include <conio.h> // 引入 conio.h 以使用 getch() 窗口創建函數&#xff1a;小黑屏 initgraph(640, 480, SHOWCONSOLE); closegraph(); //關閉一個窗口 設置背景顏色&#xff1a;這…

10.7、華為數通HCIP-DataCom H12-821單選題:121-140

121、關于OSPF特性描述錯誤的是:D A、OSPF采用鏈路狀態算法。 B、每個路由器通過泛洪 LSA 向外發布本地鏈路狀態信息 C、每臺 OSPF 設備都會收集其它路由器發來的LSA 所有的LSA 放在一起便組成了鏈路狀態數據庫LSDB, D、OSPF 區域0中所有路由器的 LSDB 都相同。 E、每臺…

【無標題】TMGM官網平臺切爾西足球俱樂部合作

TMGM作為一家在三大洲均設有辦事處的行業領導者&#xff0c;TMGM 被視為可靠的差價合約交易提供商&#xff0c;其重點是監管合規、技術創新與他聯系?&#x1f6f0;?TMGM818卓越的客戶服務。 切爾西足球俱樂部在亞太地區擁有龐大的球迷群體&#xff0c;并在該地區建立了多種亞…