求在已知一支股票价格变化的情况下能取得的最大收益。
class Solution {
public:
int maxProfit(vector<int> &prices) {
int *v=new int [prices.size()];
int ans=0;
for (int i=0;i<prices.size();i++){
int tmp=(!(i==0)?prices[i]-prices[i-1]:0);
v[i]=tmp;
}
for (int i=1;i<prices.size();i++){
if(v[i-1]>=0&&v[i]>=0)
v[i]+=v[i-1];
}
int tmp=-0xfffffff;
for(int i=0;i<prices.size();i++){
// cout<<v[i]<<"++++"<<endl;
if(v[i]<0)ans+=(tmp>0?tmp:0),tmp=-0xfffffff;
if(v[i]>tmp)tmp=v[i];
}
ans+=(tmp>0?tmp:0);
if (prices.size()==0) {
ans=0;
}
return ans;
}
};
其实只要在上升段把每个点的差的和相加就可以。
for(i=1;i<len;++i)
{
if(prices[i]>prices[i-1])
{
result += prices[i]-prices[i-1];
}
}