第121题
class Solution {
public:
int maxProfit(vector<int>& prices) {
int res=0;
int low=prices[0];
for(int p:prices)
{
low=min(low,p);
res=max(res,p-low);
}
return res;
}
};
第122题
class Solution {
public:
int maxProfit(vector<int>& prices) {
int res=0,pre=prices[0],low=prices[0];
for(int i=0;i<prices.size();++i)
{
while(i<prices.size()&&prices[i]>=pre)
{
low=min(low,prices[i]);
pre=prices[i];
++i;
}
res+=pre-low;
if(i==prices.size())
break;
low=prices[i];
pre=prices[i];
}
return res;
}
};
贪心解法
class Solution {
public:
int maxProfit(vector<int>& prices) {
int res=0,pre=prices[0];
for(int i=0;i<prices.size();++i)
{
//res+=max(0,prices[i]-prices[i-1]);也可以用一行代替循环内容
if(prices[i]>=pre)
res+=prices[i]-pre;
pre=prices[i];
}
return res;
}
};
动态规划去做
class Solution {
public:
int maxProfit(vector<int>& prices) {
int res=0,size=prices.size();
int prebuy=-prices[0],preunbuy=0;
for(int i=1;i<prices.size();++i)
{
int unbuy=max(preunbuy,prebuy+prices[i]);
int buy=max(prebuy,preunbuy-prices[i]);
preunbuy=unbuy;
prebuy=buy;
}
return preunbuy;
}
};