我的解法:如果现在的值比后来的值低,这应该买入,反之应该卖出,bool noing判断是否处于交易期
int maxProfit(vector<int>& prices) {
if(prices.size()==0)
return 0;
bool noing=true; int lirun=0, maru=0,machu=0;
for(int i=0;i<prices.size();i++){
if(i==prices.size()-1&&!noing){
machu=prices[i];
lirun+=machu-maru;
noing=true;
continue;
}
if(prices[i]<prices[i+1]&&noing){
maru=prices[i];
noing=false;
continue;
}
if(prices[i]>prices[i+1]&&!noing){
machu=prices[i];
lirun+=machu-maru;
noing=true;
continue;
}
}
return lirun;
}
解法一:没有实际的买入卖出操作,仅检测价格变低的情况,也是利润获得的情况,
int maxProfit(vector<int>& prices) {
if(prices.size()==0) return 0;
int result = 0;
int temp = prices[0];
for(int i = 1;i<prices.size();++i)
{
if(prices[i-1]>prices[i])
{
result += prices[i-1]-temp;
temp = prices[i];
}}
result += prices[prices.size()-1]-temp;
return result;
}
解法二:如果价格变高,改变值叠加便是利润,max删除价格变低的情况
int maxProfit(vector<int>& prices) {
int result = 0;
int s = prices.size();
for(int i=0; i<s-1; ++i){
result += max(0, prices[i+1]-prices[i]);
}
return result;
}