解题思路:
- 数据量为1E5,那么使用的解法大概率会超时。
- 分析问题,只要在股票每一天价格中记录最大正向价格差即可,即读入一个价格,如果当前价格比前一天的价格还低则以当前价格暂时做为买入价格,否则记录正向价格差,那么在次过程中的使用一个变量dp记录最大正向价格差即可。这样时间复杂度就是,而空间复杂度可以做到
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
int dp = INT_MIN;//用于记录最大正向价格差
int v;
int tmp = INT_MAX;//用于记录过程中的买入价格。
for(int i = 0; i < n; ++i){
scanf("%d", &v);
if(v < tmp) tmp = v;
dp = max(dp, v-tmp);
}
cout<<(dp<0? 0:dp)<<endl;
return 0;
}