牛客题霸NC7题解
作者:互联网
题目
题解
假设第$i$天买入股票,第$j~(j\ge i)$天卖出股票,则$ans=prices[j]-prices[i]$。
我们固定买入的天,$prices[j]$应当最大化,则利润最大化。
- 我们预处理出第$i$天之后的最大的股票价值。
- 遍历数组并记录最小值,更新答案。
反之记录前方的最小值倒序遍历亦可。
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