博客
关于我
【leetcode】741买卖股票的最佳时机含手续费 | 动态规划 | 贪心
阅读量:264 次
发布时间:2019-03-01

本文共 1019 字,大约阅读时间需要 3 分钟。

为了解决这个问题,我们需要找到一种方法来最大化通过多次买卖股票获得的利润,同时考虑交易手续费的影响。我们可以使用贪心算法来优化交易策略,确保每次交易都能带来最大的利润。

方法思路

贪心算法的核心思想是每次尽可能地卖出股票,以获得当前最高的利润。具体步骤如下:

  • 初始化:记录当前手上的股票的最低买入价格。初始时,买入第一个股票并支付手续费。
  • 遍历价格数组:对于每一个股票价格:
    • 如果当前价格加上手续费低于当前的最低买入价格,更新最低买入价格。
    • 如果当前价格高于当前的最低买入价格,卖出股票,获得利润,并更新最低买入价格为当前价格。
  • 计算总利润:每次卖出股票时累加利润,最后返回总利润。
  • 这种方法确保了我们总是在最佳时机卖出股票,从而最大化利润。

    解决代码

    public class Solution {    public int maxProfit(vector
    prices, int fee) { int n = prices.size(); if (n <= 1) { return 0; } int buy = prices[0] + fee; int profit = 0; for (int i = 1; i < n; ++i) { if (prices[i] + fee < buy) { buy = prices[i] + fee; } else if (prices[i] > buy) { profit += prices[i] - buy; buy = prices[i]; } } return profit; }}

    代码解释

  • 初始化buy 初始化为第一个股票价格加上手续费,表示当前手上的股票的最低买入价格。
  • 遍历数组:从第二个股票价格开始,检查当前价格是否可以更新buy,或者是否可以卖出股票获得利润。
  • 更新利润:每次卖出股票时,计算利润并累加到profit中。
  • 返回结果:遍历结束后,返回累计的最大利润。
  • 这种方法的时间复杂度为O(n),空间复杂度为O(1),非常高效,适用于大规模数据。

    转载地址:http://poox.baihongyu.com/

    你可能感兴趣的文章
    php数组去重复数据的小例子
    查看>>
    php数组实现:哈希 +双向链表
    查看>>
    PHP数组排序函数array_multisort()函数详解(二)
    查看>>
    php数组的几个函数和超全局变量
    查看>>
    PHP文件上传详解
    查看>>
    PHP文件锁
    查看>>
    php文本框输入制定文本,php – 当用户没有向文本框输入任何内容时...
    查看>>
    PHP时间戳和日期相互转换操作总结
    查看>>
    php时间戳知识点,php 时间戳函数总结与示例
    查看>>
    php更新数据库失败,php – 无法更新MySQL数据库
    查看>>
    php机器人聊天对话框,基于AIML的PHP聊天机器人
    查看>>
    PHP查找数组中最大值与最小值
    查看>>
    php查最大值,在PHP数组中查找最大值
    查看>>
    php标签筛选,关于PHP CodeIgniter框架中通过<a>标签和url做多条件分类筛选
    查看>>
    php根据年月日计算年龄
    查看>>
    RabbitMQ - 单机部署(超详细)
    查看>>
    php检查注册,PHP检查注册的电子邮件地址是一个’school.edu’地址
    查看>>
    php模拟发送GET和POST请求
    查看>>
    RabbitMQ - 以 MQ 为例,手写一个 RPC 框架 demo
    查看>>
    php模板引擎smarty
    查看>>