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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

买卖股票的最佳时机含手续费

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

相對于動態(tài)規(guī)劃:122.買賣股票的最佳時機II,本題只需要在計算賣出操作的時候減去手續(xù)費就可以了,代碼幾乎是一樣的。

唯一差別在于遞推公式部分

dp[i][0] 表示第i天持有股票所省最多現(xiàn)金。
dp[i][1] 表示第i天不持有股票所得最多現(xiàn)金

如果第i天持有股票即dp[i][0], 那么可以由兩個狀態(tài)推出來

  • 第i-1天就持有股票,那么就保持現(xiàn)狀,所得現(xiàn)金就是昨天持有股票的所得現(xiàn)金 即:dp[i - 1][0]
  • 第i天買入股票,所得現(xiàn)金就是昨天不持有股票的所得現(xiàn)金減去 今天的股票價格 即:dp[i - 1][1] - prices[i]

所以:dp[i][0] = max(dp[i - 1][0], dp[i - 1][1] - prices[i]);

如果第i天不持有股票即dp[i][1]的情況, 依然可以由兩個狀態(tài)推出來

  • 第i-1天就不持有股票,那么就保持現(xiàn)狀,所得現(xiàn)金就是昨天不持有股票的所得現(xiàn)金 即:dp[i - 1][1]
  • 第i天賣出股票,所得現(xiàn)金就是按照今天股票價格賣出后所得現(xiàn)金,注意這里需要有手續(xù)費了即:dp[i - 1][0] + prices[i] - fee

所以:dp[i][1] = max(dp[i - 1][1], dp[i - 1][0] + prices[i] - fee);

class Solution { public:int maxProfit(vector<int>& prices, int fee) {vector<vector<int>> dp(prices.size(),vector<int>(2));dp[0][0]=-prices[0];dp[0][1]=0;for(int ii=1;ii<prices.size();ii++){ dp[ii][0]=max(dp[ii-1][0],dp[ii-1][1]-prices[ii]);dp[ii][1]=max(dp[ii-1][1],dp[ii-1][0]+prices[ii]-fee);}return max(dp[prices.size()-1][1],dp[prices.size()-1][0]);} };
  • 時間復雜度:O(n)
  • 空間復雜度:O(n)

總結

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

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