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

——————————————————————————————————————————————

这题很简单,不要想复杂。

一开始可能会因为“不能同时参与多笔交易”这样的话误导,觉得必须分析极大值点否则会出错,其实不用。因为题设没有区分多笔交易与单笔交易在输出上的区别,只要去挨个数增长区间(按天计算)即可,如果题目改成需要限定买入/卖出次数,则可考虑用DP或分治求解。

 1 class Solution(object):
 2     def maxProfit(self, prices):
 3         """
 4         :type prices: List[int]
 5         :rtype: int
 6         """
 7         i = j = 1
 8         benefit = 0
 9         list_len = len(prices)
10
11         # boundary checking:
12         if list_len <2:
13             return 0
14
15         # record each assending in the array
16         for j in range(0, list_len-1):
17             if prices[j+1] > prices[j]:
18                 benefit += prices[j+1] - prices[j]
19
20         return benefit

转载于:https://www.cnblogs.com/qinziang/p/9201762.html

Leetcode-探索 | 买股票的最佳时机II相关推荐

  1. 【Leetcode122 -买股票的最佳时机 II Best Time to Buy and Sell Stock II】(C语言)

    目录 ​​​​​​​ 买股票的最佳时机II 测试单元 题目分析 标准版 巧妙版(简称投机取巧版) 买股票的最佳时机II 给定一个数组,它的第i个元素是一支给定股票第i天的价格. 设计一个算法来计算你所 ...

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

    201 / 201 个通过测试用例 状态:通过 执行用时:2 ms 内存消耗:37.4 MB 提交时间:6 月,3 周之前 class Solution {public int maxProfit(i ...

  3. 买股票的最佳时机(六种题解dp)

    引言 买股票的最佳时机类的题目也是很经典的动态规划题目,出题人通过各种花里胡哨的买股票方法来考察(虐待)你,下面我们就开始看看一类的题目的各种花样: 买股票的最佳时机 给定一个数组 prices ,它 ...

  4. 31 - 买股票的最佳时机问题

    文章目录 1. 买股票的最佳时机I 2. 买股票的最佳时机II 3. 最佳买卖股票时机 4. 买股票的最佳时机III 5. 买股票的最佳时机IV 1. 买股票的最佳时机I dp数组含义,本题两个状态: ...

  5. LeetCode实战:买卖股票的最佳时机 II

    背景 为什么你要加入一个技术团队? 如何加入 LSGO 软件技术团队? 我是如何组织"算法刻意练习活动"的? 为什么要求团队的学生们写技术Blog 题目英文 Say you hav ...

  6. Leetcode算法题(C语言)3--买卖股票的最佳时机 II

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

  7. LeetCode——第121题:买股票的最佳时机

    题目: 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润. 注意你不能在买入股票前卖出股票 ...

  8. 【Leetcode】122. Best Time to Buy and Sell Stock II买卖股票的最佳时机 II

    Best Time to Buy and Sell Stock II 买卖股票的最佳时机 II买卖股票的最佳时机 II Say you have an array for which the ith ...

  9. leetcode探索专题中的初级算法练习题(python代码+解题思路)

    本文记录leetcode探索专题中的初级算法练习题,附python实现代码&解题思路,做题过程不免查阅网络资料,侵删~如有错误,欢迎指正交流! 目录 专题一:数组: 26.从排序数组中删除重复 ...

最新文章

  1. MariaDB Galera Cluster环境搭建及高可用测试
  2. 数据加载很慢_Vaex真香!几秒钟就能处理数十亿行数据,比Pandas、Dask更好用
  3. 【CyberSecurityLearning 52】Web架构安全分析(web工作机制、HTTP协议)
  4. ESP8266使用方法
  5. win11快捷键失效怎么处理 Windows快捷键失效的解决方法
  6. BI商业智能在企业中的重要性
  7. Android手机使用Windows应用,微软宣布在你的手机应用上运行安卓APP功能向Windows 10稳定版提供...
  8. matlab锥圆球体_MATLAB锥齿轮设计
  9. 【小月电子】国产安路FPGA开发板系统学习教程-LESSON9简易测试系统
  10. simplelink_cc13x0_sdk中GPIO的使用
  11. 大学生优秀班级答辩PPT模板
  12. java-jar基础应用
  13. 央视家庭厨房节目 <天天饮食> 43道家常菜
  14. 树莓派4无痛安装OpenCV+python3
  15. java多线程应用场景
  16. 双栈完全解决计算器问题
  17. 学术沙龙-写好综述-读书笔记分享和讨论
  18. Redis从阿里云迁移至华为云
  19. TCL脚本学习(过程与文件读写)
  20. 使用java基础完成一个简单的控制台输入的用户管理(包括用户注册,登录,修改密码,及一些相关校验)

热门文章

  1. mysql 主从手动切换
  2. angular4-http
  3. bzoj 3670: [Noi2014]动物园
  4. Unity 2D 跑酷道路动起来
  5. jstat查看JVM的GC情况
  6. java正则学习笔记
  7. 百度万人协同规模下的代码管理架构演进
  8. Cocos2d-x游戏实例-《跑跑跑》制作教程(第二篇)——加入主角
  9. linux tar 备份命令
  10. jquery 插件 国外