其他分享
首页 > 其他分享> > 牛客题霸NC7题解

牛客题霸NC7题解

作者:互联网

题目

uploading-image-821104.png

题解

假设第$i$天买入股票,第$j~(j\ge i)$天卖出股票,则$ans=prices[j]-prices[i]$。
我们固定买入的天,$prices[j]$应当最大化,则利润最大化。

  1. 我们预处理出第$i$天之后的最大的股票价值。
  2. 遍历数组并记录最小值,更新答案。

反之记录前方的最小值倒序遍历亦可。

Code

class Solution {
public:
    int maxProfit(vector<int>& prices) {
        int n=prices.size();
        int ans=0;
        vector<int> suf(n);
        for(int i=n-1;~i;i--)
            if(i==n-1) suf[i]=prices[i];
            else suf[i]=max(suf[i+1],prices[i]);
        int pre=1e9;
        for(int i=0;i<n;i++){
            pre=min(pre,prices[i]);
            ans=max(ans,suf[i]-pre);
        }
        return ans;
    }
};

标签:suf,int,题解,NC7,vector,ans,prices,客题
来源: https://www.cnblogs.com/11eyes/p/14044838.html