题解 | #买卖股票的最好时机(三)# 别人 很秒的进阶解法

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

https://www.nowcoder.com/practice/4892d3ff304a4880b7a89ba01f48daf9

class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * 两次交易所能获得的最大收益
     * @param prices int整型vector 股票每一天的价格
     * @return int整型
     */
    int maxProfit(vector<int>& prices) {
        // write code here
        // 从非官解中看到一个O(n) O(1) 的解法

        int n = prices.size();
        // 这4个变量是有时间顺序的
        int buy1 = -prices[0], buy2 = -prices[0];
        int sell1 = 0, sell2 = 0;

        for(int i=1; i<n; ++i)
        {
            // 截止到第i天 各操作的最大收益 太妙了
            buy1 = max(buy1, -prices[i]);// 不断更新 第一此买入时的收益  就是找最低成本
            sell1 = max(sell1, buy1+prices[i]);// 最低成本下 那一天第一次卖出收益最大

            buy2 = max(buy2, sell1 - prices[i]); // 在第一次卖出的收益上 寻找哪一天第2次买入收益最大

            sell2 = max(sell2, buy2 + prices[i]);// 在第2次买入基础上 寻找哪天卖出最大
        }

        return sell2;
        
    }
};

全部评论

相关推荐

06-25 21:00
门头沟学院 Java
多拆解背记一下当前的高频场景面试题,结合自己的项目经历去作答,面试通过率原来真的不会低!
牛客96559368...:小公司不就是这样的吗,面试要么是点击就送,要么就是往死里拷打,没有一个统一的标准。这个不能代表所有公司
点赞 评论 收藏
分享
06-07 17:17
嘉兴学院 教师
心爱的idea:你孩
点赞 评论 收藏
分享
05-19 19:57
蚌埠学院 Python
2237:Gpa70不算高,建议只写排名,个人技能不在多而在精,缩到8条以内。项目留一个含金量高的,减少间距弄到一页,硕士简历也就一页,本科不要写很多
实习,投递多份简历没人回...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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