LeetCode - 122 - 买卖股票的最佳时机II(best-time-to-buy-and-sell-stock-ii)

栏目: IT技术 · 发布时间: 5年前

内容简介:LeetCode - 122 - 买卖股票的最佳时机II(best-time-to-buy-and-sell-stock-ii)

Create by jsliang on 2019-07-01 17:45:53
Recently revised in 2019-07-01 19:42:53

一 目录

不折腾的前端,和咸鱼有什么区别

| 目录 | | --- | | 一 目录 | | 二 前言 | | 三 解题 | | 四 执行测试 | | 五 LeetCode Submit | | 六 解题思路 |

二 前言

  • 难度:简单

  • 涉及知识:贪心算法、数组

  • 题目地址:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-ii/

  • 题目内容

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

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

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

  4. 示例 1:

  5. 输入: [7,1,5,3,6,4]

  6. 输出: 7

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

  8.   随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6-3 = 3

  9. 示例 2:

  10. 输入: [1,2,3,4,5]

  11. 输出: 4

  12. 解释: 在第 1 天(股票价格 = 1)的时候买入,在第 5 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4

  13.   注意你不能在第 1 天和第 2 天接连购买股票,之后再将它们卖出。

  14.   因为这样属于同时参与了多笔交易,你必须在再次购买前出售掉之前的股票。

  15. 示例 3:

  16. 输入: [7,6,4,3,1]

  17. 输出: 0

  18. 解释: 在这种情况下, 没有交易完成, 所以最大利润为 0

三 解题

小伙伴可以先自己在本地尝试解题,再回来看看 jsliang 的解题思路。

  • 解题代码

  1. var maxProfit = function (prices) {

  2. var res = 0;

  3. for (var i = 0; i < prices.length - 1; i++) {

  4. if (prices[i] < prices[i + 1]) {

  5. res += prices[i + 1] - prices[i];

  6. }

  7. }

  8. return res;

  9. }

四 执行测试

  1. prices: [7,1,5,3,6,4]

  2. return: 7

五 LeetCode Submit

  1. Accepted

  2. 201/201 cases passed (80 ms)

  3. Your runtime beats 93.2 % of javascript submissions

  4. Your memory usage beats 61.2 % of javascript submissions (35.2 MB)

六 解题思路

首先,这道题的解法肯定不止我这一种,但是我没想到会是这么 ** 的解法也是可以的。

按照论坛的意思:只要后一天价格比前一天高,就在前一天买进后一天卖出

就是说:

  • [1,2,3,4,5]

  1. 1 买 2 卖,收益 2-1=1

  2. 2 买 3 卖,收益 3-2=1

  3. 3 买 4 卖,收益 4-3=1

  4. 4 买 5 卖,收益 5-4=1

  5. sum=1+1+1+1=4

  • [7,1,5,3,6,4]

  1. 1 买 5 卖,收益 5-1=4

  2. 3 卖 6 卖,收益 6-3=3

  3. sum=4+3=7

即当天可以立即卖出,立即买入。

然后,股票的价格千变万化,只会在某个瞬间,股票的价格是确定的,A 股一天的交易总时间为 4 个小时,这种瞬间太多了,想要在买入前找到价格最低的那一瞬间,几乎是不可能的。

最后,感觉做完这道题(看我题解),对我毫无帮助,感觉没学到知识点,可能是我层次太低没理解到,希望之后能有所收获。


不折腾的前端,和咸鱼有什么区别!

LeetCode - 122 - 买卖股票的最佳时机II(best-time-to-buy-and-sell-stock-ii)

jsliang 会每天更新一道 LeetCode 题解,从而帮助小伙伴们夯实原生 JS 基础,了解与学习算法与数据结构。

扫描上方二维码,关注 jsliang 的公众号,让我们一起折腾!

LeetCode - 122 - 买卖股票的最佳时机II(best-time-to-buy-and-sell-stock-ii)

jsliang 的文档库 由 梁峻荣 采用 知识共享 署名-非商业性使用-相同方式共享 4.0 国际 许可协议进行许可。
基于https://github.com/LiangJunrong/document-library上的作品创作。
本许可协议授权之外的使用权限可以从 https://creativecommons.org/licenses/by-nc-sa/2.5/cn/ 处获得。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

游戏测试精通

游戏测试精通

舒尔茨 / 周学毛 / 清华大学出版社 / 2007-9 / 48.00元

《游戏测试精通》来自3位在游戏测试领域都有着极其丰富经验的专业人员,是亚马逊“五星级”畅销书,也是国内第一本专业级游戏测试经典之作,不仅内容全面、实例丰富,而且讲解透彻、可读性强,并提供多个资源下载和技术支持站点。现如今,游戏产业发展迅猛,游戏测试已成为游戏产品、游戏软件、游戏程序设计与开发不可或缺的环节。《游戏测试精通》主要揭示了如何将软件测试的专业方法运用到游戏产业中,全面涵盖了游戏测试的基本......一起来看看 《游戏测试精通》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

MD5 加密
MD5 加密

MD5 加密工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具