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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

leetcode 123. 买卖股票的最佳时机 III

發(fā)布時間:2025/3/15 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 leetcode 123. 买卖股票的最佳时机 III 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

使用動態(tài)規(guī)劃的解法,空間復雜度O(2*2)如果交易k次則為O(2*k),時間復雜度O(2n),交易k次為O(n*k),

因此本題實際上可以退化為買賣一次的情況:去掉buy2和sell2,即leetcode121;? ?以及進化為買賣k次的情況,即狀態(tài)變量增加為k個buy和sell,即leetcode188

初始化buy[k]=-∞,sell[k]=0;具體原理如下:

?

class Solution { public:int maxProfit(vector<int>& prices) {//當只能持有1股時題目可以認為是一個二維的圖計算遞推,定義buy1,sell1,buy2,sell2,表示第i天(i為下標)第1或2次買入賣出//定義狀態(tài)轉移,見程序//為了能夠遞推需要狀態(tài)初值,考慮第0天buy1肯定為買入第0天,需要讓-price在任何情況下都大于buy1,因此buy1初值為-∞//sell1的狀態(tài)至少是當天買入并賣出,因此最小為0,又因為只要大于0就應該選擇大于0的方案,綜合兩種情況應該賦值為0,同理buy2和sell2int len=prices.size();if(len<=1) return 0;int sell1=0,sell2=0,buy1=INT_MIN,buy2=INT_MIN;int res=0;for(int price:prices){buy1=max(buy1,-price);sell1=max(sell1,buy1+price);buy2=max(buy2,sell1-price);sell2=max(sell2,buy2+price);}return sell2;} };

?

轉載于:https://www.cnblogs.com/joelwang/p/10865258.html

總結

以上是生活随笔為你收集整理的leetcode 123. 买卖股票的最佳时机 III的全部內容,希望文章能夠幫你解決所遇到的問題。

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