题解 | 买卖股票的最好时机(一)

买卖股票的最好时机(一)

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; 
    }
};

全部评论

相关推荐

点赞 评论 收藏
分享
07-22 13:50
门头沟学院 Java
仁者伍敌:其实能找到就很好了,当然收支能抵
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务