1,题目描述
2,题目分析
动态规划 前i天的最大收益 = max{ 前i - 1天的最大收益,第i天的价格 - 前i - 1天中的最小价格 }
思路还是挺清晰的,还是DP思想:
- 记录【今天之前买入的最小值】
- 计算【今天之前最小值买入,今天卖出的获利】,也即【今天卖出的最大获利】
- 比较【每天的最大获利】,取最大值即可
3,代码实现
class Solution {
public:
int maxProfit(vector<int>& prices) {
//动态规划 前i天的最大收益 = max{ 前i - 1天的最大收益,第i天的价格 - 前i - 1天中的最小价格 }
if (prices.size() <= 1)
return 0;
int minValue = prices[0], maxValue = 0;
for (int i = 1; i < prices.size(); i++) {
maxValue = max(maxValue, prices[i] - minValue);
minValue = min(minValue, prices[i]);
}
return maxValue;
}
};