309. Best Time to Buy and Sell Stock with Cooldown
2017-12-28 10:42
309 查看
1、题目描述
给一个数组表示股票的价格。不能在卖了股票的第二天直接买股票,需要冷静至少一天,问最大利润。
2、思路
用四个变量表示四个数值。
prebuy表示在前一天或更早做了买入时,利润的最大值;
buy表示在今天或更早做了买入时,利润的最大值,初始化为INT_MIN;
presell表示在前两天或更早做了卖出时,利润最大值,初始化为0;
sell表示在今天或更早做了卖出时,利润最大值,初始化为0;
对于今天来说,
prebuy = buy; //更新prebuy为昨天的buy
buy = max(buy, presell - price[i]); //今天可以买入的情况下,利润最大值,这时的presell其实还是两天前的sell值
presell = sell; //更新presell为昨天的sell
sell = max(sell,prebuy + price[i]); //今天可以卖出的情况下,利润最大值,这时的prebuy其实是一天前的buy值
3、代码
给一个数组表示股票的价格。不能在卖了股票的第二天直接买股票,需要冷静至少一天,问最大利润。
2、思路
用四个变量表示四个数值。
prebuy表示在前一天或更早做了买入时,利润的最大值;
buy表示在今天或更早做了买入时,利润的最大值,初始化为INT_MIN;
presell表示在前两天或更早做了卖出时,利润最大值,初始化为0;
sell表示在今天或更早做了卖出时,利润最大值,初始化为0;
对于今天来说,
prebuy = buy; //更新prebuy为昨天的buy
buy = max(buy, presell - price[i]); //今天可以买入的情况下,利润最大值,这时的presell其实还是两天前的sell值
presell = sell; //更新presell为昨天的sell
sell = max(sell,prebuy + price[i]); //今天可以卖出的情况下,利润最大值,这时的prebuy其实是一天前的buy值
3、代码
int maxProfit(vector<int>& prices) { int n = prices.size(); if(n==0) return 0; int buy=INT_MIN,prebuy; int sell=0,presell=0; for(int i=0;i<n;i++){ prebuy = buy; buy = max(buy,presell-prices[i]); presell = sell; sell = max(prebuy+prices[i],sell); } return sell; }
相关文章推荐
- leecode_309 Best Time to Buy and Sell Stock with Cooldown
- 309. Best Time to Buy and Sell Stock with Cooldown
- [309] Best Time to Buy and Sell Stock with Cooldown
- 309. Best Time to Buy and Sell Stock with Cooldown
- 309. Best Time to Buy and Sell Stock with Cooldown *
- leecode 解题总结:309. Best Time to Buy and Sell Stock with Cooldown
- 【LEETCODE】309-Best Time to Buy and Sell Stock with Cooldown
- 309. Best Time to Buy and Sell Stock with Cooldown
- LeetCode 309 Best Time to Buy and Sell Stock with Cooldown
- leetcode 309 : Best Time to Buy and Sell Stock with Cooldown
- Middle-题目19:309. Best Time to Buy and Sell Stock with Cooldown
- leetcode——309——Best Time to Buy and Sell Stock with Cooldown
- 309. Best Time to Buy and Sell Stock with Cooldown
- 309. Best Time to Buy and Sell Stock with Cooldown
- 309. Best Time to Buy and Sell Stock with Cooldown
- 309. Best Time to Buy and Sell Stock with Cooldown -Medium
- 309. Best Time to Buy and Sell Stock with Cooldown
- 309. Best Time to Buy and Sell Stock with Cooldown
- 309. Best Time to Buy and Sell Stock with Cooldown
- 309. Best Time to Buy and Sell Stock with Cooldown