LeetCode算法题-Best Time to Buy and Sell Stock II

每天一道LeetCode-----买卖商品问题,计算最大利润,分别有一次交易,两次交易,多次交易的情况 Best Time to Buy and Sell Stock 原题链接Best Time to Buy and Sell Stock 给定一个价格序列prices,其中prices[i]代表第i天商品的价格,商家需要在某一天买入,然后在之后的某一天出售,计算可以获得的最大利润 本质就是计算prices[i]−prices[j]prices[i] - prices[j]的最大值,要求i> 阅读详情

这是悦乐书的第173次更新,第175篇原创

01 看题和准备

今天介绍的是LeetCode算法题中Easy级别的第32题(顺位题号是122)。假设有一个数组,其中第i个元素是第i天给定股票的价格。设计算法以找到最大利润。可以根据需要完成尽可能多的交易(即,多次买入并卖出一股股票)。

注意:不能同时进行多笔交易(即,您必须在再次购买之前卖出股票)。

例如:

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

说明:在第2天买入(价格= 1)并在第3天卖出(价格= 5),利润= 5-1 = 4。然后在第4天买入(价格= 3)并在第5天卖出(价格= 6),利润= 6-3 = 3。

输入:[1,2,3,4,5]
输出:4

说明:在第1天买入(价格= 1)并在第5天卖出(价格= 5),利润= 5-1 = 4。请注意,您不能在第1天购买,在第2天购买并在以后出售,就像您一样同时参与多个交易。您必须在再次购买之前出售。

输入:[7,6,4,3,1]
输出:0

说明:在这种情况下,不进行任何交易,即最大利润= 0。

本次解题使用的开发工具是eclipse,jdk使用的版本是1.8,环境是win7 64位系统,使用Java语言编写和测试。

02 解题

特殊情况一:当传入的数组为null时,直接返回0。

特殊情况二:当传入的数组不为null,但是其内只有0个或者1个元素时,无法支持买入并卖出操作,直接返回0。

正常情况:比之昨天的只能做一次交易,今天这道题可以进行多次交易,来求得最大利润,只要符合低买高卖,利润肯定是会大于0的。如果新的一天的价格比前一天的价格,两者之差就是利润,任意两个相邻的价格只要符合这个规则,都可以算作利润,并且题目也没有说卖出的当天不能再买入,所以依次比较相邻两元素并求差即可。

public int maxProfit(int[] prices) {
    if (prices == null || prices.length <= 1) {
        return 0;
    }
    int maxProfit = 0;
    for (int i = 0; i < prices.length - 1; ++i) {
        if (prices[i] < prices[i + 1]) {
            maxProfit += prices[i + 1] - prices[i];
        }
    }
    return maxProfit;
}

03 小结

此题的解法只用了一层循环,因此时间复杂度是O(n);此题只创建了一个变量,因此空间复杂度是O(1)。

以上就是全部内容,如果大家有什么好的解法思路、建议或者其他问题,可以下方留言交流,点赞、留言、转发就是对我最大的回报和支持!

别再搞混了!MATLAB通信仿真中EbN0转SNR的保姆级公式推导与避坑指南 本文深入解析MATLAB通信仿真中EbN0与SNR转换的核心公式,揭示数字仿真与理论系统的关键差异。通过真实案例展示错误参数设置导致的隐蔽问题,并提供完整的参数自查清单和正确实现代码,帮助工程师和学生避免常见错误,确保仿真结果准确可靠。 阅读详情

相关推荐

细胞膜电学特性的分数阶微积分建模

分数阶微积分在细胞膜电学特性建模中的应用主要体现在对细胞膜的电容行为和神经元放电活动的更精确描述上。

冰河世纪20的博客 624

leetcode算法题之买卖股票问题

参考:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-with-cooldown/solution/zui-jia-mai-mai-gu-piao-shi-ji-han-leng-dong-qi-4/ 1)只能一次交易,商家需要在某一天买入,然后在之后的某一天出售,不能同时存在多比交易 输入:【7,1,5,3,6,4】 输出:5 = (6-1),(不是7-1=6,因为时间是往前走的,低买高卖才有效) 解题思路: 本质

嵇康的专栏 435

VHDL实战:基于EDA的数字频率计(FREQ)设计与优化

本文详细介绍了使用VHDL语言和EDA工具设计并优化数字频率计(FREQ)的全过程。从核心原理与模块划分入手,深入讲解了时钟分频、测频控制、计数锁存及显示驱动等关键模块的VHDL实现,并提供了从代码编写、功能仿真到综合布局布线的完整EDA实战指南。文章还探讨了测量精度优化、资源权衡及跨时钟域处理等进阶话题,是掌握FPGA数字系统设计的经典案例。

milk8的博客 584

动态规划:股票买卖问题(只交易一次)——07

股票买卖问题(只交易一次) 问题描述 算法思路 其实这道题目思想很简单,无非就是要找到股票的最大值和最小值,并且保证最大值一定在最小值的右边 动态规划思想:从最后一步来看问题 设F(n)为前n天交易可获得的最大利润,price【】为输入数组 当我们要求F(n)的时候,就看看和F(n-1)有没有关系,此时有两种情况 M1 = price【n】 - MIN { price【0 - n-1】} M2 = F(n - 1) M1为当天价格减去前几天的最低价可获得的最大陆润 M2为不算当天价

weixin_44844089的博客 1295

STM32G474的HRTIM实战:用CubeMX配置互补PWM驱动全桥电路(附移相算法代码)

本文详细介绍了如何使用STM32G474的HRTIM高分辨率定时器,通过CubeMX配置互补PWM驱动全桥电路,并附移相算法代码。内容涵盖HRTIM硬件架构解析、CubeMX配置全流程、移相控制算法实现及调试技巧,为数字电源和电机控制领域提供实用解决方案。

weixin_27017211的博客 486

UG NX 12.0零基础实战:从草图绘制到三维建模全流程解析

本文详细解析UG NX 12.0从草图绘制到三维建模的全流程,适合零基础用户快速掌握这款工业设计软件。内容涵盖界面设置、基础操作、草图技巧、拉伸旋转建模、布尔运算等核心功能,并通过机械零件实战案例演示完整设计流程,帮助读者系统学习UG NX 12.0的工业设计应用。

weixin_29261711的博客 1184

【LeetCode】 122. Best Time to Buy and Sell Stock II 买卖股票的最佳时机 II(Easy)(JAVA)每日一题

【LeetCode】 122. Best Time to Buy and Sell Stock II 买卖股票的最佳时机 II(Easy)(JAVA) 题目地址: https://leetcode.com/problems/best-time-to-buy-and-sell-stock-ii/ 题目描述: Say you have an array prices for which the i^th element is the price of a given stock on day i. Design

qq_16927853的博客 195

本地大模型5:在pycharm用python调用ollama本地大模型

python调用ollama本地大模型

weixin_74825941的博客 8377

LeetCode算法题之122. Best Time to Buy and Sell Stock II(easy)【Python3题解】

题目描述: Say you have an array prices for which the ith element is the price of a given stock on day i. Design an algorithm to find the maximum profit. You may complete as many transactions as you like (...

DaMoWangZQ的博客 404

YOLOv11 网络结构详解:一文看懂 Backbone、Head、C3k2、SPPF 和 Detect 检测头

在使用 YOLOv11 进行目标检测时,我们经常会接触到或这样的模型配置文件。backbone和head分别是什么意思?ConvC3k2SPPFC2PSA这些模块分别起什么作用?P3/8、P4/16、P5/32 代表什么?为什么最后 Detect 要同时接收 3 个不同尺度的特征图?YOLOv11n、YOLOv11s、YOLOv11m、YOLOv11l、YOLOv11x 的区别在哪里?

learnerYC的博客 1816

001、NPU是什么?为什么嵌入式设备需要它?

本文通过作者调试工业相机板卡的经历,引出嵌入式设备为何需要NPU(神经网络处理器)的探讨。文章对比了CPU和NPU的设计哲学差异,指出NPU通过专用乘加器阵列和优化的数据流,能高效处理神经网络运算。作者分析了嵌入式设备使用NPU的三大优势:算力提升、功耗降低和实时性保障,并介绍了三类常见NPU形态。通过一个YOLOv5模型调试案例,揭示了NPU使用中的常见陷阱,最后给出五条实用建议,强调理解NPU原理和局限的重要性。文章生动展现了NPU在嵌入式AI应用中的关键作用。

m0_50546716的博客 127

c++ leetcode 算法题 Best Time to Buy and Sell Stock II

Best Time to Buy and Sell Stock II  Total Accepted: 30687 Total Submissions: 83357My Submissions Question  Solution  Say you have an array for which the ith element is the price of a

gang8901的专栏 602

【问题解决】Python 运行报错 `ModuleNotFoundError` 全网最全解决方案,一文搞定所有导包问题

本文全面解析Python中常见的ModuleNotFoundError和ImportError问题,提供从基础到高级的解决方案。文章首先分析问题原因,包括模块未安装、环境不一致、路径问题等,然后给出7种解决方案:安装缺失模块、检查Python环境、使用虚拟环境、添加搜索路径、相对导入、setup.py安装本地包和使用__init__.py。针对Jupyter Notebook、Docker容器等常见场景提供专门解决方案,并推荐使用requirements.txt、pipenv等预防措施。最后分享调试技巧,帮

博客 917

leetcode best-time-to-buy-and-sell-stock-iii(Java)

leetcode题目 best-time-to-buy-and-sell-stock-iii – newcoder 28 买卖股票的最佳时机III – leetcode 123 题目描述 * Say you have an array for which the i th element * is the price of a given stock on day i. * * Des...

聚沙成塔 684

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

【LeetCode】解题122:Best Time to Buy and Sell Stock II

LeetCode解题 122:Best Time to Buy and Sell Stock II Problem 122: Best Time to Buy and Sell Stock II [Easy]解题思路Solution (Java) Problem 122: Best Time to Buy and Sell Stock II [Easy] Say you have an array...

Fayedily的博客 369

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

leetcode best-time-to-buy-and-sell-stock(Java)

leetcode题目 best-time-to-buy-and-sell-stock – newcoder 30 买卖股票的最佳时机 – leetcode 121 题目描述 * Say you have an array for which the i th element * is the price of a given stock on day i. * * If you were...

聚沙成塔 484

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

LeetCode - Best Time To Buy and Sell Stock Series (I, II, III, IV, with Cooldown)

LeetCode - Best Time to Buy and Sell Stock 系列 解题报告本文记录笔者在解LeetCode上的Best Time to Buy and Sell Stock系列时的一些想法。该系列题目共有五道,它们背景相似,但因为条件限制不同,解决思路也不太相同。I Best Time to Buy and Sell Stock https://leet

Gregzeng的博客 688

【LeetCode】 Best Time to Buy and Sell Stock I II III IV 解题报告

Best Time to Buy and Sell Stock I题意:用一个数组表示股票每天的价格,数组的第i个数表示股票在第i天的价格。 如果只允许进行一次交易,也就是说只允许买一支股票并卖掉,求最大的收益。分析:动态规划法。从前向后遍历数组,记录当前出现过的最低价格,作为买入价格,并计算以当天价格出售的收益,作为可能的最大收益,整个遍历过程中,出现过的最大收益就是所求。**代码:**O(n)时

跳出温水的青蛙 2万+

leetcode 122 Best Time to Buy and Sell Stock II 详细解答

leetcode 122 Best Time to Buy and Sell Stock II 详细解答 解答1 假设有一个图像代表数组: > https://leetcode.com/problems/best-time-to-buy-and-sell-stock-ii/solution/ 最后需要求得的答案就是,每一段的递增区间的差值。所以得到代码如下: 解法2 上面解法比较hack, 不推荐。 就股票买卖来说,买入股票自身的价格就会 -Price,卖出股票自身的价格就是 +Price. 利

qq_22210659的博客 270

LeetCode Array 121 122 Best Time to Buy and Sell Stock I II

Array 121. Best Time to Buy and Sell Stock Say you have an array for which the ith element is the price of a given stock on day i. If you were only permitted to complete at most one transaction (i.e.,...

Yi Jiao's Blog 159

122. Best Time to Buy and Sell Stock II

文章目录122. Best Time to Buy and Sell Stock IIDescriptionSolutionsSubmissionsSummary 122. Best Time to Buy and Sell Stock II https://leetcode.com/problems/best-time-to-buy-and-sell-stock-ii/ Description ...

La La Land 144

Leetcode在线编程 Best Time to Buy and Sell Stock II

Leetcode在线编程 Best Time to Buy and Sell Stock II DP

你误入了一个弱渣的领域 613

LeetCode 122. Best Time to Buy and Sell Stock II

题目来源:https://leetcode.com/problems/best-time-to-buy-and-sell-stock-ii/ 问题描述 122.Best Time to Buy and Sell Stock II Easy Say you have an array for which theithelement is the price of a given stoc...

da_kao_la的博客 186

【LeetCode】解题123:Best Time to Buy and Sell Stock III(动态规划)

LeetCode解题 123:Best Time to Buy and Sell Stock III (动态规划)Problem 123: Best Time to Buy and Sell Stock III [Hard]解题思路I. O(2n)时间+O(3n)空间II. O(2n)时间+O(n)空间III. O(n)时间+O(4)空间Solution (Java) Problem 123: B...

Fayedily的博客 491

leetcode best-time-to-buy-and-sell-stock-ii(Java)

leetcode题目 best-time-to-buy-and-sell-stock-ii – newcoder 29 买卖股票的最佳时机II-- leetcode 122 题目描述 * Say you have an array for which the i th element is * the price of a given stock on day i. * * Desig...

聚沙成塔 538
上一篇: LeetCode算法题-Best Time to Buy and Sell Stock
下一篇: LeetCode算法题-Valid Palindrome(Java实现)
程序员小川
博客等级 码龄10年 47粉丝 305原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值