动态规划,与53. 最大子数组和 这道题目类似,详见下面代码:
class Solution {
public:
int maxProfit(vector<int>& prices) {
//动态规划,以f(i)表示第i天卖出时最大的利润,因此维护一个前i - 1个元素的最小值即可
int minn = prices[0];
// int f[1e5 + 10] = {0};
int ans = 0;
for(int i = 1;i < prices.size();i++){
minn = min(minn,prices[i]);
ans = max(ans,prices[i] - minn);
}
return ans;
}
};