<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          ?LeetCode刷題實(shí)戰(zhàn)309:最佳買(mǎi)賣(mài)股票時(shí)機(jī)含冷凍期

          共 2736字,需瀏覽 6分鐘

           ·

          2021-07-04 09:07

          算法的重要性,我就不多說(shuō)了吧,想去大廠,就必須要經(jīng)過(guò)基礎(chǔ)知識(shí)和業(yè)務(wù)邏輯面試+算法面試。所以,為了提高大家的算法能力,這個(gè)公眾號(hào)后續(xù)每天帶大家做一道算法題,題目就從LeetCode上面選 !

          今天和大家聊的問(wèn)題叫做 最佳買(mǎi)賣(mài)股票時(shí)機(jī)含冷凍期,我們先來(lái)看題面:
          https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-with-cooldown/

          You are given an array prices where prices[i] is the price of a given stock on the ith day.

          Find the maximum profit you can achieve. You may complete as many transactions as you like (i.e., buy one and sell one share of the stock multiple times) with the following restrictions:

          • After you sell your stock, you cannot buy stock on the next day (i.e., cooldown one day).

          • Note: You may not engage in multiple transactions simultaneously (i.e., you must sell the stock before you buy again).


          給定一個(gè)整數(shù)數(shù)組,其中第 i 個(gè)元素代表了第 i 天的股票價(jià)格 。
          設(shè)計(jì)一個(gè)算法計(jì)算出最大利潤(rùn)。在滿足以下約束條件下,你可以盡可能地完成更多的交易(多次買(mǎi)賣(mài)一支股票):
          • 你不能同時(shí)參與多筆交易(你必須在再次購(gòu)買(mǎi)前出售掉之前的股票)。

          • 賣(mài)出股票后,你無(wú)法在第二天買(mǎi)入股票 (即冷凍期為 1 天)。


          示例

          輸入: [1,2,3,0,2]
          輸出: 3 
          解釋: 對(duì)應(yīng)的交易狀態(tài)為: [買(mǎi)入, 賣(mài)出, 冷凍期, 買(mǎi)入, 賣(mài)出]


          解題

          https://blog.csdn.net/Cypresszky/article/details/105916407

          動(dòng)態(tài)規(guī)劃:

          這道題是【買(mǎi)賣(mài)股票的最佳時(shí)機(jī)II】的變形,因?yàn)橐彩遣幌拗平灰状螖?shù),只是交易完一次后要冷凍一天,假設(shè)今天是第i天dp[i][1]表示要持有股票,與dp[i-2][0]前兩天(前一天的前一天)賣(mài)出股票的利潤(rùn)有關(guān)。


          1)dp數(shù)組的含義:前i天交易的最大利潤(rùn)
          dp[i][0]:第i天不持有股票
          dp[i][1]:第i天持有股票

          2)狀態(tài)轉(zhuǎn)移方程:
          所以狀態(tài)轉(zhuǎn)移方程基本一樣,變化的地方就是-1,變成-2
          dp[i][0] = max(dp[i-1][0],dp[i-1][1]+prices[i]);//今天要持有股票,那么選擇前一天不持有股票和前一天持有股票今天賣(mài)掉了股票中的最大利潤(rùn)。
          dp[i][1] = max(dp[i-1][1],dp[i-2][0]-prices[i]);//今天要持有股票。前兩天的交易了一次,中間休息了一天,今天買(mǎi)入;前一天本就持有股票,今天不買(mǎi)賣(mài)股票。

          class Solution {
              public int maxProfit(int[] prices) {
                  int len = prices.length;
                  if(len <= 1) return 0;
               int[][] dp = new int[len][2];
               dp[0][0] = 0;
               dp[0][1] = -prices[0];
               dp[1][0] = Math.max(dp[0][0], dp[0][1] + prices[1]);
               dp[1][1] = Math.max(dp[0][0] - prices[1], dp[0][1]);
               for(int i = 2; i < len; i++) {
                 dp[i][0] = Math.max(dp[i-1][0], dp[i-1][1] + prices[i]);//這次要手上沒(méi)有股票
                 dp[i][1] = Math.max(dp[i-2][0] - prices[i], dp[i-1][1]);//那么上場(chǎng)進(jìn)行了交易要休息一天
               }
               return dp[len-1][0];
              }
          }


          好了,今天的文章就到這里,如果覺(jué)得有所收獲,請(qǐng)順手點(diǎn)個(gè)在看或者轉(zhuǎn)發(fā)吧,你們的支持是我最大的動(dòng)力 。

          上期推文:

          LeetCode1-280題匯總,希望對(duì)你有點(diǎn)幫助!

          LeetCode刷題實(shí)戰(zhàn)301:刪除無(wú)效的括號(hào)

          LeetCode刷題實(shí)戰(zhàn)302:包含全部黑色像素的最小矩陣
          LeetCode刷題實(shí)戰(zhàn)303:區(qū)域和檢索 - 數(shù)組不可變
          LeetCode刷題實(shí)戰(zhàn)304:二維區(qū)域和檢索 - 矩陣不可變
          LeetCode刷題實(shí)戰(zhàn)305:島嶼數(shù)量II
          LeetCode刷題實(shí)戰(zhàn)306:累加數(shù)
          LeetCode刷題實(shí)戰(zhàn)307:區(qū)域和檢索 - 數(shù)組可修改
          LeetCode刷題實(shí)戰(zhàn)308:二維區(qū)域和檢索 - 可變

          瀏覽 18
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  操屄导航| 91无码人妻一区二区成人aⅴ | 成人18禁秘 啪啪网站网站 | A片免费观看视频 | 想要xx在线播放 |