Leetcode-探索 | 买股票的最佳时机II
给定一个数组,它的第 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相关推荐
- 【Leetcode122 -买股票的最佳时机 II Best Time to Buy and Sell Stock II】(C语言)
目录 买股票的最佳时机II 测试单元 题目分析 标准版 巧妙版(简称投机取巧版) 买股票的最佳时机II 给定一个数组,它的第i个元素是一支给定股票第i天的价格. 设计一个算法来计算你所 ...
- leetcode 买卖股票的最佳时机 II
201 / 201 个通过测试用例 状态:通过 执行用时:2 ms 内存消耗:37.4 MB 提交时间:6 月,3 周之前 class Solution {public int maxProfit(i ...
- 买股票的最佳时机(六种题解dp)
引言 买股票的最佳时机类的题目也是很经典的动态规划题目,出题人通过各种花里胡哨的买股票方法来考察(虐待)你,下面我们就开始看看一类的题目的各种花样: 买股票的最佳时机 给定一个数组 prices ,它 ...
- 31 - 买股票的最佳时机问题
文章目录 1. 买股票的最佳时机I 2. 买股票的最佳时机II 3. 最佳买卖股票时机 4. 买股票的最佳时机III 5. 买股票的最佳时机IV 1. 买股票的最佳时机I dp数组含义,本题两个状态: ...
- LeetCode实战:买卖股票的最佳时机 II
背景 为什么你要加入一个技术团队? 如何加入 LSGO 软件技术团队? 我是如何组织"算法刻意练习活动"的? 为什么要求团队的学生们写技术Blog 题目英文 Say you hav ...
- Leetcode算法题(C语言)3--买卖股票的最佳时机 II
题目:买卖股票的最佳时机 II 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 设计一个算法来计算你所能获取的最大利润.你可以尽可能地完成更多的交易(多次买卖一支股票). 注意:你不 ...
- LeetCode——第121题:买股票的最佳时机
题目: 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润. 注意你不能在买入股票前卖出股票 ...
- 【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 ...
- leetcode探索专题中的初级算法练习题(python代码+解题思路)
本文记录leetcode探索专题中的初级算法练习题,附python实现代码&解题思路,做题过程不免查阅网络资料,侵删~如有错误,欢迎指正交流! 目录 专题一:数组: 26.从排序数组中删除重复 ...
最新文章
- MariaDB Galera Cluster环境搭建及高可用测试
- 数据加载很慢_Vaex真香!几秒钟就能处理数十亿行数据,比Pandas、Dask更好用
- 【CyberSecurityLearning 52】Web架构安全分析(web工作机制、HTTP协议)
- ESP8266使用方法
- win11快捷键失效怎么处理 Windows快捷键失效的解决方法
- BI商业智能在企业中的重要性
- Android手机使用Windows应用,微软宣布在你的手机应用上运行安卓APP功能向Windows 10稳定版提供...
- matlab锥圆球体_MATLAB锥齿轮设计
- 【小月电子】国产安路FPGA开发板系统学习教程-LESSON9简易测试系统
- simplelink_cc13x0_sdk中GPIO的使用
- 大学生优秀班级答辩PPT模板
- java-jar基础应用
- 央视家庭厨房节目 <天天饮食> 43道家常菜
- 树莓派4无痛安装OpenCV+python3
- java多线程应用场景
- 双栈完全解决计算器问题
- 学术沙龙-写好综述-读书笔记分享和讨论
- Redis从阿里云迁移至华为云
- TCL脚本学习(过程与文件读写)
- 使用java基础完成一个简单的控制台输入的用户管理(包括用户注册,登录,修改密码,及一些相关校验)