Best Time to Buy and Sell Stock II

来源:互联网 发布:虚拟机怎么安装mac os 编辑:程序博客网 时间:2024/04/28 23:29

本题属于动态dp,

buy表示到目前i为止最后一个状态是买(有可能之前买的最近一直没卖,有可能是刚买的)

sell表示到目前i为止最后一个状态是卖(有可能之前卖了最近一直没买,有可能刚卖的)

注意一下两个递推公式:

                               buy=max(buy,sell-prices[i]);

                              sell=max(sell,buy+prices[i]); 

另外,要找到开始的buy和sell,当找到递增部分即可。

AC代码:安静

<pre name="code" class="cpp">class Solution {public:int maxProfit(vector<int>& prices) {int buy=0,sell=0,j=0;if(prices.size()>1){                        //判断下初始的buy 和sellfor(;j<prices.size()-1;j++){if(prices[j+1]>prices[j]){buy=-prices[j];sell=prices[j+1]-prices[j];break;}}for(int i=j+2;i<prices.size();i++){buy=max(buy,sell-prices[i]);sell=max(sell,buy+prices[i]);}    }return sell;}};
                                             
0 0
原创粉丝点击