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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

[LeetCode 123] - 买入与卖出股票的最佳时机III(Best Time to Buy and Sell Stock III)

發布時間:2023/12/19 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [LeetCode 123] - 买入与卖出股票的最佳时机III(Best Time to Buy and Sell Stock III) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題

假設你有一個數組,其中的第i個元素表示一只股票在第i天的價格。

設計一個算法找出最大的利潤值。你最多只能進行兩次交易。

注意:

你不能在同一時間進行多次交易(即你必須在再次買入股票之前賣出當前的股票)

?

初始思路

我們先來考慮只能進行一次交易的情況,即只能買入并賣出一次。可以嘗試在第一天就買入股票,然后按順序計算后面每一天賣出股票后的利潤。將該利潤和一個保存最大利潤的變量比較,如果更大就更新最大利潤。很顯然,第一天就買入并在利潤最大時賣出肯定不會是所有情況的答案,因為股票的價格是會下跌的。那么在什么情況下我們考慮嘗試改變買入的時間呢?和第一天買入的價格相比,后面的價格無非就分兩種情況:

  • 價格更高。這種情況顯然是不可能出現優于第一天買入的利潤的。因為[從這天之后第一天買入可能的最高利潤]=[第一天到該天的利潤]+[該天買入可能的最高利潤]。所以這種情況下我們需要維持第一天買入的選擇。
  • 價格一樣或更低。[從這天之后第一天買入可能的最高利潤]=[該天買入可能的最高利潤]-?[第一天到該天的虧損]。這種情況下在該天買入就有可能創造最高利潤了。

如此一來我們就可以得到一個O(n)的算法:

設置買入價為第一天的價格

從第二天價格遍歷存放價格的數組

? ? 如果該天賣出利潤 > 0

? ? ? ? 如果利潤大于當前最大利潤,更新最大利潤

? ? 如果該天賣出利潤 <= 0

? ? ? ? 設置買入價為該天價格

現在讓我們考慮兩次交易的情況。因為不能在沒賣出股票的情況下再次買入,所以兩次買入賣出的區間是不能交叉的。那么我們可以在用上述方法找到一個新的最大利潤后,從下一天開始用同樣方法再找一次最大利潤。將兩個利潤相加后嘗試更新一個總的最大利潤。注意處理完后外層的遍歷不能中斷,還要繼續查找直到遍歷完畢。偽代碼變化如下:

計算利潤

設置買入價為第一天的價格

從第二天價格遍歷存放價格的數組

? ??如果該天賣出利潤 > 0

? ? ? ? 如果利潤大于當前最大利潤,更新最大利潤

? ? ? ? ? ?如果是在外層函數

? ? ? ? ? ? ? ?第二次利潤 = 計算利潤(當前天數+1作為第一天)

? ? ? ? ? ? ? 如果利潤+第二次利潤大于總最大利潤,更新總最大利潤

? ? 如果該天賣出利潤 <= 0

? ? ? ? 設置買入價為該天價格

如果是在外層函數,返回總最大利潤

否則返回當前最大利潤?

轉換成C++代碼后如下:

1 class Solution { 2 public: 3 int maxProfit(std::vector<int> &prices) 4 { 5 return CaculateProfit(prices, 0, FIRST).profit; 6 } 7 8 private: 9 struct Profit 10 { 11 Profit() : profit(0), buyPrice(-1), buyDay(0), sellDay(0) 12 { 13 } 14 15 int profit; 16 int buyPrice; 17 int buyDay; 18 int sellDay; 19 }; 20 21 enum Transaction 22 { 23 FIRST, 24 SECOND 25 }; 26 27 Profit CaculateProfit(std::vector<int> &prices, int start, Transaction transaction ) 28 { 29 Profit currentProfit; 30 Profit maxProfit; 31 Profit secondProfit; 32 Profit totalProfit; 33 34 for(int day = start; day < prices.size(); ++day) 35 { 36 if(currentProfit.buyPrice == -1) 37 { 38 currentProfit.buyPrice = prices[day]; 39 currentProfit.buyDay = day; 40 continue; 41 } 42 43 currentProfit.profit = prices[day] - currentProfit.buyPrice; 44 currentProfit.sellDay = day; 45 46 if(currentProfit.profit < 0) 47 { 48 currentProfit.buyPrice = prices[day]; 49 currentProfit.buyDay = day; 50 currentProfit.profit = 0; 51 } 52 53 if(currentProfit.profit > maxProfit.profit) 54 { 55 if(transaction == FIRST) 56 { 57 secondProfit = CaculateProfit(prices, day + 1, SECOND); 58 59 60 if(currentProfit.profit + secondProfit.profit > totalProfit.profit) 61 { 62 totalProfit.profit = currentProfit.profit + secondProfit.profit; 63 } 64 } 65 66 maxProfit = currentProfit; 67 } 68 } 69 70 if(transaction == FIRST) 71 { 72 return totalProfit; 73 } 74 else 75 { 76 return maxProfit; 77 } 78 } 79 }; maxProfit

提交后順利通過Judge Large。

轉載于:https://www.cnblogs.com/shawnhue/archive/2013/06/09/leetcode_123.html

總結

以上是生活随笔為你收集整理的[LeetCode 123] - 买入与卖出股票的最佳时机III(Best Time to Buy and Sell Stock III)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 午夜精品毛片 | 精品久久蜜桃 | 天堂av在线网 | 亚洲福利视频网站 | 激情视频在线播放 | 亚洲天堂福利视频 | 九一国产在线 | 国产a国产 | 欧美一级无毛 | 国产一区二区四区 | 日本精品在线观看视频 | 韩国日本在线观看 | 超碰97人人射妻 | 日韩精品一区二区三区 | 成人精品影院 | 国产一级片免费观看 | 欧洲-级毛片内射 | 国产在线a| 亚洲男人天堂网址 | 在线免费视频一区 | 男女视频免费网站 | 日日操狠狠操 | 国产三级久久 | 97视频免费在线观看 | 亚洲一级片免费看 | 国产精品久久无码一三区 | 亚洲天堂123 | 亚洲国产日韩在线一区 | 欧美日韩一区二区不卡 | 校花被c到呻吟求饶 | 天天操天天插天天干 | 国产精品一二三级 | 天堂av资源 | 色视频网站在线观看 | 黄色国产一级片 | 亚洲国产情侣 | 香蕉视频亚洲一级 | 亚洲一区二区三区免费看 | 青青草国产在线观看 | 91精品国产综合久久久久 | 美女色综合 | 麻豆国产尤物av尤物在线观看 | 麻豆美女视频 | 9色av| 东北少妇不带套对白 | 国产a v一区二区三区 | 久草大 | 91精品久久久久 | 免费性爱视频 | 色综合视频在线 | 国产精品va在线观看无码 | 女人扒开双腿让男人捅 | 日韩国产精品一区二区 | 亚洲综合伊人 | 四虎少妇做爰免费视频网站四 | 国产亚洲精品美女久久久久 | 国产一区二区欧美 | 日韩字幕在线观看 | 亚洲Av无码成人精品区伊人 | 视频一区在线免费观看 | 免费无遮挡在线观看视频网站 | 日韩av电影手机在线观看 | 在线麻豆av | 重口变态虐黄网站 | 免费的av网站 | 亚洲欧美日韩不卡 | 精品久久久久久久久久 | 欧美日韩一区二区三区免费 | 日本黄色免费 | 久久久看 | 伊人色婷婷 | 日韩一级免费毛片 | 午夜欧美日韩 | 国产午夜在线播放 | 视频精品久久 | 最近中文字幕在线mv视频在线 | 美女视频黄a视频全免费观看 | 国产伦精品一区二区三区妓女 | 三级网站在线 | 女王人厕视频2ⅴk | 蜜臀av性久久久久蜜臀av麻豆 | 哪里可以免费看av | 91超碰国产在线 | 公侵犯一区二区三区四区中文字幕 | 91成人午夜| 牛牛精品视频 | 午夜影院免费体验区 | 青青草原在线免费 | www.成人av | 男插女视频免费 | 蜜臀久久99精品久久久久宅男 | 亚洲精品99久久久久中文字幕 | 免费看毛片的网站 | 日本一区二区精品视频 | 关之琳三级全黄做爰在线观看 | 国产乱码一区二区 | 日本a视频在线观看 | 人人妻人人爽一区二区三区 | 9191av|