维护俩个最大最小值也是可以的,

 int maxProfit(vector<int>& prices) {

        int n=prices.size();

        vector<intdp(n);

        int sum=0;

        int maxindex=1;

        int minindex=0;

       while(maxindex<n)

       {

           if(prices[maxindex]>prices[minindex])

           {

               sum=max(prices[maxindex]-prices[minindex],sum);

           }else

           {

               minindex=maxindex;

           }

           maxindex++;

       }

        return sum;

    }