竞赛训练1 入门问题:Maximum Profit
题目:
外汇交易可以通过兑换不同国家的货币以赚取汇率差。比如1美元兑换100日元时购入1000美元,然后等汇率变动到一美元兑换108日元时再卖出,这样就可以赚取(108-100)*1000=8000日元。
现在请将某货币在t时刻的价格RiRi(i=0,1,2…n-1)作为输入数据,计算出价格差Rj-Ri(其中j>i)的最大值。
输入:
第一行输入整数n,接下来n行依次给整数Ri(i=0,1,2…n-1)赋值。
输出:
在单独一行输出最大值。
限制:2≤n≤200000 1≤Rt≤10^9
#include<iostream>
#include<algorithm>
using namespace std;
static const int MAX = 200000;
//求数组里面按照从前到后两两之差的最大值
int main(){
int R[MAX],n;
cin>>n;
for(int i=0;i<n;i++)
cin>>R[i];
int maxv=-2000000000;//设置一个足够小的初始值,也可以用R[1]-R[0]
int minv=R[0];
for(int i=1;i<n;i++)
{
maxv=max(maxv,R[i]-minv);//更新最大值
minv=min(minv,R[i]);//暂存现阶段最小值
}
cout<<maxv<<endl;
return 0;
}
时间复杂度O(n)
如果你觉得这篇博客还可以,别忘记点个赞加个关注再走哦。