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

买卖股票的最佳时机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.kler.cn/a/548416.html

相关文章:

  • 离线量化算法和工具 --学习记录1
  • CAS单点登录(第7版)10.多因素身份验证
  • 如何使用ADB进行WIFI调试
  • pdf文件的读取,基于深度学习的方法
  • GPT-4o微调SFT及强化学习DPO数据集构建
  • windows11+ubuntu20.04双系统下卸载ubuntu并重新安装
  • NCHAR_CS和CHAR_CS,导致UNION ALL 时,提示SQL 错误 [12704] [72000]: ORA-12704: 字符集不匹配
  • Vue2官网教程查漏补缺学习笔记 - Part1基础 - 9事件处理10表单输入绑定11组件基础
  • 一些常用的Yum源
  • 性格测评小程序06用户注册校验
  • 基于角色访问控制的UML 表示
  • qt中实现QListWidget列表
  • 【java】基本数据类型和引用数据类型
  • TCP/IP 协议
  • word分栏使得最后一页内容自动平衡
  • Bandana论文阅读
  • 架构设计系列(四):设计模式
  • 【环境安装】重装Docker-26.0.2版本
  • Excel中不用复杂公式根据指定X列的数值N复制整行数据N行简单方法
  • 1.hadoop3.3.6集群搭建