maxProfit

来源:互联网 发布:大麦盒子电视直播软件 编辑:程序博客网 时间:2024/04/19 04:03
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int maxProfit(vector<int>&prices)
{
const int n=prices.size();
if(n<2)
return 0;
vector<int>f(n,0);
vector<int>g(n,0);
for(int i=1,valley=prices[0];i<n;++i)
{
valley=min(valley,prices[i]);
f[i]=max(f[i],prices[i]-valley);
}
for(int i=n-2,peak=prices[n-1];i>=0;--i)
{
peak=max(peak,prices[i]);
g[i]=max(g[i],peak-prices[i]);
}
int ret=0;
for(int i=0;i<n;++i)
ret=max(ret,f[i]+g[i]);
return ret;
}
int main()
{
int a[]={-2,4,3,1,-5,3,7,-6,3};
vector<int>v(a,a+sizeof(a)/sizeof(int));
cout<<maxProfit(v)<<endl;
return 0;
}
0 0