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

1190

被折叠的 条评论
为什么被折叠?



