股票问题的方法就是 动态规划,因为它包含了重叠子问题,即买卖股票的最佳时机是由之前买或不买的状态决定的,而之前买或不买又由更早的状态决定的...
思路(官方题解方法二:一次遍历)
遍历一遍数组,计算每次 到当天为止 的最小股票价格和最大利润。
定义一个变量保存最大利润,同时定义一个变量保存最小的股票价格,遍历的时候只需要将当前股票价格减去最小的股票得到当前的最大利润。
代码
class Solution { public: int maxProfit(vector<int>& prices) { int min_price = int(1e9); int max_value = 0; for (auto &x:prices) { max_value = max(max_value,x - min_price); min_price = min(min_price,x); } return max_value; } };