给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。

设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。

注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。

示例 1:输入: [7,1,5,3,6,4]
输出: 7
解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6-3 = 3 。
示例 2:输入: [1,2,3,4,5]
输出: 4
解释: 在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。注意你不能在第 1 天和第 2 天接连购买股票,之后再将它们卖出。因为这样属于同时参与了多笔交易,你必须在再次购买前出售掉之前的股票。
示例 3:输入: [7,6,4,3,1]
输出: 0
解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。
买卖股票问题就是典型的动态规划问题。把大问题分解成小问题,小问题的最优解求出来,合并就是大问题的最优解。
这道题的小问题就是比较相邻两天的股票的高低,后面的一天比前面的一天股票高,我们就买出,这样就能赚到钱,把所有的问题都归结于二天股票高低,这样问题就很容易理解,我们可以举个例子
输入: [7,1,5,3,6,4]
输出: 7
解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出,
这笔交易所能获得利润 = 5-1 = 4 。
随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,
这笔交易所能获得利润 = 6-3 = 3 。
关于这道题,要想解答出来我们首先需要搞清楚规则。

买股票想要获取最大利润,那么我们首先需要先检查数组中第一个数字,也就是说第一天的价格是7,第二天价格是1,很明显我们不会在最贵的时候买股票。
所以我们最开始在第二天买,也就是价格等于1的时候买,第三天价格变成了5,说明有钱赚了,那么就马上卖掉。这时候利润就是=5-1=4
然后我们在第四天价格等于3的时候买股票,第五天价格等于6,有钱赚,那么就马上卖掉即可。这时候利润就是=6-3=3
总利润就是4+3=7

由此我们可以得出结论,当明天的价格比今天的价格贵的时候我们今天买,明天卖,这样能够获取最大利润。搞清楚这个,相信你对上面的算法就一目了然了

最简单的公式就是 0-1+5-3+6=7 当后者比前面大,我们就加,反之我们就减,最后没有-4的原因是,减去以后就不是最大利润。最前面的0我们可以理解问我们没有钱,然后欠钱买第二天的股票。
 let max = 0;for (let i = 0; i < prices.length; i++) {if (prices[i] < prices[i + 1]) {max += (prices[i + 1] - prices[i])}}return max
我看啦很多网上的文章,思路都是我这样,我在写这篇博客的时候,就陷入误区,就是买股票的钱是从哪里来的?难道不是从利润中减去的吗?
比如上面的那个例子:7 1 5 3 6 4
我们在第二天花一元买了彩票,在第三天五块抛出,这时候你手里有五元,利润是5-1=4。但是你还需要买这天的股票(这时候需要比较这天(抛出的这天)和它后面的那天的大小,如果他小,就买,大的话就别买)。你发现今天是五元明天确实三元,所以你就明天买,今天不买。因为你手里有5元,买下3元以后,你还有2元,然后在6元的那天抛出,这时候你手里的前一共是6+2=8元!因为你最开始买彩票花了1元,减去1–>8-1=7元
上面的那个问题是我在写博客的时候发现的,顿时就陷入误区,同时又是在写的过程中发现如何解决的。

122.买卖股票的最佳时机 II相关推荐

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

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

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

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

  3. _42LeetCode代码随想录算法训练营第四十二天-动态规划 | 121.买卖股票的最佳时机、122.买卖股票的最佳时机II

    _42LeetCode代码随想录算法训练营第四十二天-动态规划 | 121.买卖股票的最佳时机.122.买卖股票的最佳时机II 题目列表 121.买卖股票的最佳时机 122.买卖股票的最佳时机II 1 ...

  4. _28LeetCode代码随想录算法训练营第二十八天-贪心算法 | 122.买卖股票的最佳时机II 、55.跳跃游戏、45.跳跃游戏II

    _28LeetCode代码随想录算法训练营第二十八天-贪心算法 | 122.买卖股票的最佳时机II .55.跳跃游戏.45.跳跃游戏II 题目列表 122.买卖股票的最佳时机II 55.跳跃游戏 45 ...

  5. 代码随想录算法训练营第三十二天_第八章_贪心算法 | 122.买卖股票的最佳时机II、55. 跳跃游戏、45.跳跃游戏II

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

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

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

  7. day52| ● 121. 买卖股票的最佳时机 ● 122.买卖股票的最佳时机II

    121. 买卖股票的最佳时机 1.代码 class Solution { public:int maxProfit(vector<int>& prices) { vector< ...

  8. 【第49天|● 121. 买卖股票的最佳时机 ● 122.买卖股票的最佳时机II 】

    121. 买卖股票的最佳时机 class Solution {public:int maxProfit(vector<int>& prices) {int res =0;int m ...

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

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

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

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

最新文章

  1. oracle数据库定时任务
  2. python随机抽号_随手小代码——Python 从集合中随机抽取元素
  3. 有关Visual Studio 2008 SP1和SQL Server 2008的一些说明
  4. 物体识别_小鼠新物体识别Protocol
  5. tensorflow随笔-条件语句-tf.case
  6. 144. Binary Tree Preorder Traversal 二叉树的前序遍历
  7. 谷歌发布“虚拟现实化”游戏 Ingress
  8. smart link和聚合链路综合实验
  9. java------io基础(一)
  10. 励志,一年绝境翻盘,大厂的逆袭之路
  11. 延长计算机屏幕显示时间,如何设置电脑显示屏保时间
  12. Glide原生方法加载圆形图片
  13. 一分钟学会写网页表格
  14. 电容选型及常用值与作用的学习
  15. 时间显示(模拟时钟)
  16. CSS控制,彩色图片变灰色
  17. 台式计算机如何双屏显示,台式机如何去设置双屏
  18. Java语言的特点有哪些?你对Java认知有多少?
  19. 清除浏览器缓存的方法(chrome为例)
  20. mysql存储animoji_iPhoneXS在微信里发送Animoji表情操作教程

热门文章

  1. 微软新编程字体开源,用着一不小心就骂人了
  2. 可乐瓶游戏c语言,中班协调性体育游戏—玩可乐瓶
  3. c语言编写可乐瓶游戏,可乐瓶游戏二十则
  4. vlc的应用之六:简单的视频点播系统(B/S)的实现
  5. 异响加持、吐槽声不断,小鹏G9难解困局
  6. 车载信息服务软件开发包使用指南(20)
  7. ZooKeeper只完美解决Unable to read additional data from server sessionid 0x0报错问题,并带你深度理解ZooKeeper内部机制之选举机制
  8. 巨龙之巢服务器为响应,LOL巨龙之巢新网通大区9月4日开放 龙女皇子潘森免费用...
  9. 【原创】VMware安装没有引导的Ghost镜像,超级详细,步步讲解
  10. 小规模 DDoS 黑客攻击摧毁了维基解密网站