解题思路:

  • 数据量为1E5,那么使用O(n2)O(n^2)的解法大概率会超时。
  • 分析问题,只要在股票每一天价格中记录最大正向价格差即可,即读入一个价格,如果当前价格比前一天的价格还低则以当前价格暂时做为买入价格,否则记录正向价格差,那么在次过程中的使用一个变量dp记录最大正向价格差即可。这样时间复杂度就是O(nO(n),而空间复杂度可以做到O(1)O(1)
#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;
}