121. 买卖股票的最佳时机
记录第i天之前股价的最小值,每次假设第i天卖出这支股票,更新答案。
class Solution {
public:
int maxProfit(vector<int>& prices) {
int tip=prices.size();
int tipmin=1000000000;
int ans=0;
for (int i=0;i<tip;i++){
//更新答案
if (i>0) ans=max(ans,prices[i]-tipmin);
//更新最小价格
if (prices[i]<tipmin) tipmin=prices[i];
}
return ans;
}
};
122. 买卖股票的最佳时机 II
这题的贪心思想比较有意思,选择抛出的时间点必然是股价不继续上涨的一天。即卖出股票时,满足prices[i]>prices[i+1]。
在此基础上,容易写出代码。
class Solution {
public:
int maxProfit(vector<int>& prices) {
int tip=prices.size();
int ans=0;
int tipmin=1000000000;
int help;
for (int i=0;i<tip;i++){
if (i<tip-1) help=prices[i+1];
else help=0;
if (i>0 && prices[i]>help && prices[i]>tipmin){
ans+=prices[i]-tipmin;
tipmin=1000000000;
}
else{
tipmin=min(tipmin,prices[i]);
}
}
return ans;
}
};