目录

1.问题

2.示例

3.提示

4.思路

6.代码


1.问题

给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。

在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。

返回 你能获得的 最大 利润 。

2.示例

示例1:

输入:prices = [7,1,5,3,6,4]
输出:7
解释:在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4 。
     随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6 - 3 = 3 。
     总利润为 4 + 3 = 7 。

示例2:

输入:prices = [1,2,3,4,5]
输出:4
解释:在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4 。
     总利润为 4 。

示例3: 

输入:prices = [7,6,4,3,1]
输出:0
解释:在这种情况下,交易无法获得正利润,所以不参与交易可以获得最大利润,最大利润为0。

3.提示

  • 1 <= prices.length <= 3 * 104
  • 0 <= prices[i] <= 104

4.思路

贪心算法解决:下面我随便画了一个股票的曲线图,可以看到如果股票一直上涨,只需要找到股票上涨的最大值和股票开始上涨的最小值,计算他们的差就是这段时间内股票的最大利润。如果股票下跌就不用计算,最终只需要把所有股票上涨的时间段内的利润累加就是我们所要求的结果。

6.代码

public int maxProfit(int[] prices) {if (prices == null || prices.length < 2)return 0;int total = 0, index = 0, length = prices.length;while (index < length) {//如果股票下跌就一直找,直到找到股票开始上涨为止while (index < length - 1 && prices[index] >= prices[index + 1])index++;//股票上涨开始的值,也就是这段时间上涨的最小值int min = prices[index];//一直找到股票上涨的最大值为止while (index < length - 1 && prices[index] <= prices[index + 1])index++;//计算这段上涨时间的差值,然后累加total += prices[index++] - min;}return total;
}

【力扣】买卖股票的最佳时机 II相关推荐

  1. 力扣 买卖股票的最佳时机II

    力扣 买卖股票的最佳时机II 题目描述 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 设计一个算法来计算你所能获取的最大利润.你可以尽可能地完成更多的交易(多次买卖一支股票). 注 ...

  2. 力扣刷题day42|121买卖股票的最佳时机、122买卖股票的最佳时机II

    文章目录 121. 买卖股票的最佳时机 贪心思路 动态规划思路 动态规划五部曲 122. 买卖股票的最佳时机II 贪心思路 动态规划思路 动态规划五部曲 121. 买卖股票的最佳时机 力扣题目链接 给 ...

  3. 力扣贪心算法专题(一)455.分发饼干 376. 摆动序列 53. 最大子序和 122.买卖股票的最佳时机II 1005.K次取反后最大化的数组和 思路及C++实现 贪心算法 动态规划

    文章目录 贪心算法 455.分发饼干 思路 步骤 代码 376. 摆动序列 贪心算法 思路 分析 代码 动态规划 思路 步骤 代码 53. 最大子序和 暴力解法 双层for循环 贪心算法 思路 分析 ...

  4. 买卖股票的最佳时机 II——力扣122题

    力扣122--买卖股票的最佳时机 II 给定一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格. 在每一天,你可以决定是否购买和/或出售股票.你在任何时候 最多 只能 ...

  5. LintCode领扣算法问题答案:150. 买卖股票的最佳时机 II

    150. 买卖股票的最佳时机 II 描述 给定一个数组 prices 表示一支股票每天的价格. 你可以完成任意次数的交易, 不过你不能同时参与多个交易 (也就是说, 如果你已经持有这支股票, 在再次购 ...

  6. 算法训练Day49 | Leetcode121. 买卖股票的最佳时机(只能买卖一次);LeetCode122. 买卖股票的最佳时机II(可以买卖多次)

    目录 Leetcode121. 买卖股票的最佳时机 方法一:暴力解法 1. 思路 2. 代码实现 3. 复杂度分析 4. 思考与收获 方法二:贪心算法 1. 思路 2. 代码实现 3. 复杂度分析 方 ...

  7. Day32——122.买卖股票的最佳时机II 55. 跳跃游戏 45.跳跃游戏II +第二天复习

    赶上进度,冲冲冲 目录 前言 一.买卖股票的最佳时机II 二.跳跃游戏 解题思路: 三.跳跃游戏|| 总结 前言 生命能与世俗相契合,才能不朽,生命的整体是象征的,因为他是有意义的. --<日瓦 ...

  8. 力扣买卖股票系列总结

    以下所有题目的具体代码都在本专栏中,可以查看 121. 买卖股票的最佳时机 :给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格. 你只能选择 某一 ...

  9. 2、买卖股票的最佳时机 II

    2.买卖股票的最佳时机 II 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 设计一个算法来计算你所能获取的最大利润.你可以尽可能地完成更多的交易(多次买卖一支股票). 注意:你不能 ...

  10. 122. 买卖股票的最佳时机 II

    121. 买卖股票的最佳时机 122. 买卖股票的最佳时机 II 123. 买卖股票的最佳时机 III 188. 买卖股票的最佳时机 IV 309. 最佳买卖股票时机含冷冻期 714. 买卖股票的最佳 ...

最新文章

  1. 进程间通信(5) 命名管道
  2. 【转】最流行的编程语言JavaScript能做什么?
  3. 华为鸿蒙os公测需要多久,华为系统公测到正式版要多久
  4. 互联网通用架构技术----缓存雪崩
  5. java与python多态的区别_如果未调用父构造函数(与Java不同),多态性在Python中如何工作? - java...
  6. xp虚拟服务器设置,VMWare的XP虚拟机网络设置
  7. Html代码打包后如何修改,html代码打包封装成APP教程
  8. 评分卡模型之数据预处理
  9. 【NLP】基于神经网络PCNN(Piece-Wise-CNN)的关系抽取模型
  10. javascript基础常识问答(一)
  11. 海思开发板学习记录2----- 开发板配置tftp 服务
  12. YOLOV5:在本地电脑训练模型
  13. Django实现简单网页弹出警告
  14. SpringBoot启动报错Could not resolve placeholder ‘XXX.XXX‘ in value
  15. 股票 汇率 基金 手机号码 天气 等 常用免费接口
  16. 【CEGUI】CEGUI入门篇之初始化(一)
  17. C语言实现三子棋及多子棋的制作(初学者)
  18. 仿QQ秀换衣服的一个小例子
  19. 表单、表格常用属性大全
  20. 当Transformer遇见偏微分方程求解

热门文章

  1. 在Ubuntu 20.04上面搭建嵌入式开发环境
  2. 随机生成26个英文字母
  3. XP中如何共享打印机
  4. 精品Linux应用分享推荐
  5. vue部署后饿了么组件的图片不见了
  6. excel 导入导出使用poi自定义注解
  7. Lua UTF-8 全角转半角
  8. CorelDraw插件开发-VBA-常用功能-二维码创建-cdr插件
  9. JPK Data Processing AFM数据处理
  10. 阿里技术风险与效能部负责人张瓅玶:从底层资源到核心竞争力 阿里巴巴的深度用云实践