python股票交易最大值最多可以完成k比交易_用Python买卖股票的最佳时间

假设我们有一个数组A,这里A [i]表示第i天给定股票的价格。我们必须找到最大的利润。我们最多可以完成一笔交易。(交易是指买卖股票)。但是我们必须记住,我们可能不会同时进行多项交易。因此,在购买新股票之前,我们必须出售股票。

假设数组像A = [7、1、5、3、6、4],那么结果将是5。如我们所见,如果我们在第2天(索引1)购买,那么它将取1作为购买价格。然后,如果我们在第5天卖出,利润将为6-1 = 5。

为了解决这个问题,请遵循以下步骤-创建两个与left相同的leftMin和rightMax数组,并用0s填充它们

leftMin [0] = A [0]

对于范围从1到A – 1长度的i,leftMin [i] = leftMin [i – 1]和A [i]的最小值

rightMax [n-1] = A [n – 1]

对于范围从A – 1到1的范围内的i,rightMax [i] = rightMax [i + 1]和A [i]的最大值

设定答案:= 0

对于范围从0到A – 1长度的i,答案:=答案的最大值和rightMax [i +1] – leftMin [i]

返回答案

让我们看一下实现以获得更好的理解

示例class Solution(object):

def maxProfit(self, prices):

"""

:type prices: List[int]

:rtype: int

"""

if not prices:

return 0

leftMin,rightMax = [0 for i in range(len(prices))],[0 for i in range(len(prices))]

leftMin[0] = prices[0]

for i in range(1,len(prices)):

leftMin[i] = min(leftMin[i-1],prices[i])

#print(leftMin)

rightMax[-1]= prices[-1]

for i in range(len(prices)-2,-1,-1):

rightMax[i] = max(rightMax[i+1],prices[i])

#print(rightMax)

ans = 0

for i in range(len(prices)-1):

ans = max(ans,rightMax[i+1]-leftMin[i])

return ans

ob1 = Solution()print(ob1.maxProfit([7,2,5,8,6,3,1,4,5,4,7]))

输入值prices = [7,2,5,8,6,3,1,4,5,4,7]

输出结果6

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值