题目
给定一个长度为 N N N的数组,数组中的第 i i i个数字表示一个给定股票在第 i i i 天的价格。
如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。
注意你不能在买入股票前卖出股票。
输入格式
第一行包含整数 N,表示数组长度。
第二行包含 N 个不大于 1 0 9 10^9 109 的正整数,表示完整的数组。
输出格式
输出一个整数,表示最大利润。
数据范围
1 ≤ N ≤ 1 0 5 1≤N≤10^5 1≤N≤105,
输入样例1:
6
7 1 5 3 6 4
输出样例1:
5
输入样例2:
5
7 6 4 3 1
输出样例2:
0
样例解释
样例1:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。注意利润不能是 7-1 = 6, 因为你不能在买入股票前卖出股票。
样例2:在这种情况下, 不进行任何交易, 所以最大利润为 0。
#include<iostream>
#include <algorithm>
typedef long long ll;
int main()
{
ll n,ans=0,minv=1<<28;
cin>>n;
for(ll i=1;i<=n;++i)
{
ll x;
cin>>x;
ans=max(ans,x-minv);
minv=min(minv,x);
}
cout<<ans;
return 0;
}