当前位置: 首页 > news >正文

买卖股票的最佳时机II(力扣122)

这道题有两个注意点,一是我们永远都只能持有一支股票,二是一天之中只能在买股票和卖股票中二选一。因此我们至少要从第二天开始才有利润收入,也就是每两天是一个交易单元,这一点后面要用到。第一次做这道题一般都是这样想,选一个价格低的一天买入,再选个价格高的一天卖,再选一个低的买入.....循环反复,但我们根本确定不了多高算高,多低算低。不妨换一种思考方式,举个例子:我们第一天买股票,第三天卖股票,期间获得的利润可以拆成第一天到第二天的利润与第二天到第三天的利润之和,也就是将一次买卖拆成多个交易单元。于是贪心的点就出来了,我们只有在当前交易单元的利润为正时,才将其算入我们最终买卖股票的利润当中。局部最优,也就是只有当交易单元利润为正才算入总利润,全局最优就是最后得到的利润是我们能获取的最大值。大家可以结合我下面的代码及详细注释理解此题。

代码及详细注释如下:

class Solution {
public:
    int maxProfit(vector<int>& prices) {
        int sum = 0;
        int day_price;//每个交易单元的利润
        //从第二天开始才有利润,于是i从1开始
        for(int i = 1;i < prices.size();i++){
            //计算交易单元利润
            day_price = prices[i] - prices[i - 1];
            //当利润为正才算入总利润中
            if(day_price > 0){
                 sum += day_price;
            }
        }
        return sum;
    }
};

相关文章:

  • Python使用Flask结合DeepSeek开发
  • 2D 游戏艺术、动画和光照
  • Vue 2 — 配置请求转发
  • 【第5章:深度生成模型— 5.4 深度生成模型前沿全景:从Diffusion到多模态,揭秘AI生成技术的未来】
  • $ npx electron-forge import 一直报权限问题 resource busy or locked,
  • EasyRTC嵌入式WebRTC视频通话SDK支持Web浏览器、Linux、ARM、Android、iOS
  • win10右键使用IDEA打开
  • 日志2025.2.14
  • 深入浅出 Python Logging:从基础到进阶日志管理
  • Vue笔记(九)
  • ADC入门准备(九):信号与系统知识回顾
  • JVM学习
  • JPA应用@Formula注解
  • Windows 11 卸载 Edge
  • intellij idea篇
  • 工厂设计模式
  • PySide (PyQt)的视图(QGraphicsView)和场景(QGraphicsScene)
  • 【鸿蒙Next】优秀鸿蒙博客集锦
  • 简单了解低代码Low Code
  • repo学习使用
  • 网站上如何做电子手册/seo站外优化平台
  • 如何自己创网站/网站到首页排名
  • 市政府统一建设网站的提议/外贸网站推广方法之一
  • 化妆品瓶子怎么做网站/如何自建网站
  • 单页网站建设服务好的商家/软文范例大全500字
  • 深圳本地网站建设/深圳网站设计实力乐云seo