当前位置: 首页 > 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;
    }
};

http://www.dtcms.com/a/15624.html

相关文章:

  • 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学习使用
  • HTTP/2 由来及特性
  • 探寻氧化铈:催化剂领域的璀璨明珠-京煌科技
  • 第39周:猫狗识别 2(Tensorflow实战第九周)
  • 上课啦 | 2月17日软考高项【5月备考班】
  • DeepSeek神经网络:技术架构与实现原理探析
  • VSCode选择编译工具(CMake)
  • HarmonyOS 5.0应用开发——Canvas制作个人签名
  • Linux开源生态与开发工具链的探索之旅
  • 通过openresty和lua实现随机壁纸
  • 基于SSM的农产品供销小程序+LW示例参考