前i日最大利润=max(前(i−1)日最大利润,第i日价格−前i日最低价格 )
dp[i] =max( dp[i−1] , prices[i]−min(prices[0:i]) )
class Solution {
public:
int maxProfit(vector<int>& prices) {
if (prices.empty()) return 0;
int minval = prices[0];
vector<int> dp(prices.size(), 0);
dp[0] = 0;
for (int i = 1; i < prices.size(); i++) {
if (prices[i] - minval >= 0) {
dp[i] = max(dp[i - 1], prices[i] - minval);
}
else {
dp[i] = dp[i - 1];
}
minval = min(minval, prices[i]);
}
return dp.back();
}
};