力扣121题:买卖股票的最佳时机,python实现,学习笔记

该博客介绍了如何用Python解决LeetCode中的121题,即寻找一次交易能获得的最大利润。通过分析示例,解释了最大利润的计算逻辑:max(之前的最大价格,当前价格-之前最小买入价格)。初始状态,最大利润设为0,最小价格设为正无穷。接着给出了相应的Python代码实现。

题目:给定一个数组,它的第i个元素是一支给定股票第i天的价格。
如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你能获取的最大利润。
注意不能在买入股票前卖出股票。
示例:
输入:[7,1,5,3,6,4]
输出:5
在第二天以1元买入,在第5天价格为6时卖出。
注意利润不能是7-1=6,因为7是卖出价格,卖出价格不能在买入价格之前。

分析:
最大利润=max(之前的最大价格,当前价格-之前最小买入价格)
需要初始化最大利润和最小价格,需要找到最大价格,所以初始值应该设置成较小的数字,由于利润最小为0,所以将其初始化为0;对于最小价格而言,由于需要找到最小的价格,所以初始化需要将其设置为较大的数。
代码如下:

在这里插入代码片
def maxProfit(self,prices:List[int]):
    max_profit = 0
    min_price = float("inf")
    for price in prices:
    	max_profit = max(max_profit,price-min_price)
    	min_price = min(price,min_price)
    return max_profit
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值