给定一个数组,它的第 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。

思路:

相比于买卖股票的最佳时机 Ⅰ,这里可以多次买卖股票,但有个限制,就是再次买股票时必须先将之前的股票卖掉。

设置两个变量:buy和money,分别代表买入的股票,初始值为prices[0] 和 总收入,初始为0

遍历prices数组,分两种情况,price  > buy 和  price <= buy

1、price  > buy

说明此时股票的价格大于等于买入的价格,就卖股票,将这个差值加入到money总收入中

2、prices <= buy

什么都不做

判断完后,更新 buy 为 price(也就是buy永远都会更新)

注意:连续上升的股票一次买卖和多次买卖收入是一样的,例如示例2.

因此,我们可以进行遍历,若prices[i] >= sell,将sell设置为prices[i],否则,就把这次的买卖加入总利润中,重新设置买卖金额为prices[i]。

/*** @param {number[]} prices* @return {number}*/
var maxProfit = function(prices) {let money = 0let buy = prices[0]for (let price of prices) {if (price > buy) {money += price - buy}buy = price}return money
};

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

  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 二.跳跃游戏 解题思路: 三.跳跃游戏|| 总结 前言 生命能与世俗相契合,才能不朽,生命的整体是象征的,因为他是有意义的. --<日瓦 ...

最新文章

  1. 敏捷和DevOps:是敌是友?
  2. 【大神公开课】旷视研究院院长-孙剑博士:视觉计算前沿进展
  3. 最少拦截系统(dp)
  4. android+壁纸拉伸,Launcher3自定义壁纸旋转后拉伸无法恢复
  5. C# Win32 API 应用
  6. JZOJ 5384. 【NOIP2017提高A组模拟9.23】四维世界
  7. 2018清华计算机类专业录取分数线,清华大学2018年各省录取分数线及各专业录取分数线 - 高教网...
  8. python 如何在一个for循环中遍历两个列表
  9. [BUGKU][CTF][PWN][2020] PWN writeup
  10. 转:Delphi2010新发现-类的构造和析构函数功能
  11. mybatis是否接受运算符参数化
  12. Mac盖上屏幕后外接屏幕持续黑画面的解决方法
  13. 地外水平/斜面的太阳理论辐照度计算及其python实现
  14. Java方法重载中返回值的问题
  15. 图像压缩编码——香农-凡诺编码与霍夫曼编码
  16. L1 和 L2的区别
  17. 硕士学论文中的国内图书分类号和国际图书分类号
  18. 计算机没有检查到您的u盾,Win10检测不到U盾怎么办?
  19. 解决ONENOTE for WIN10同步问题,E000006B同步错误
  20. laradock 国内版

热门文章

  1. 电气领域-输电线路杆塔鸟巢检测图像数据(含标签,原始图像未经扩充)
  2. mybatis延迟加载策略
  3. TDSQL | 张家港行,我是你的“破壁人”
  4. 如何理解《2020年大数据白皮书》的大数据技术最新发展趋势?
  5. 汇正财经靠谱吗?千亿市场,国资云的数字中国底座
  6. python画一个可爱的皮卡丘(完整代码)
  7. Wonderware-InTouch历史数据库之报表曲线Historian客户端开发
  8. 搭建管理驾驶舱--以结果倒逼过程管理
  9. Ternary weight networks 论文笔记
  10. C语言各类型转化,可用于单片机