题解 | 买卖股票的最好时机(一)
买卖股票的最好时机(一)
https://www.nowcoder.com/practice/64b4262d4e6d4f6181cd45446a5821ec
class Solution { public: int maxProfit(vector<int>& prices) { // 初始时,把第 0 天的价格当作当前认为的买入价格(后续会动态更新) int current_end = prices[0]; // 初始利润为 0 ,表示还没找到能赚钱的买卖时利润为 0 int current_profit = 0; // 从第 1 天开始遍历价格数组,因为至少需要两天(买入和卖出)才有利润可言 for(int i = 1; i < prices.size(); i++) { // 关键步骤 1:更新当前认为的最低买入价格 // 每次遇到一个新的价格,就看看它是否比之前记录的买入价格更低 // 如果是,就更新买入价格为这个更低的价格,这样后续如果有高价,利润可能更大 current_end = min(current_end, prices[i]); // 关键步骤 2:计算当前价格卖出能获得的利润,并更新最大利润 // 用当前价格减去当前认为的最低买入价格,得到当天卖出能赚的钱 // 如果这个利润比之前记录的最大利润高,就更新最大利润 current_profit = max(current_profit, prices[i] - current_end); } // 最后返回能获得的最大利润,如果一直是亏损(利润为负),就返回初始的 0 return current_profit; } };