gpt4 book ai didi

python - 买卖股票的最佳时间——Python 中的另一种方法

转载 作者:行者123 更新时间:2023-12-05 08:50:10 25 4
gpt4 key购买 nike

<分区>

问题 - 假设您有一个数组,其中 ith<​​ 元素是给定股票在第 i 日的价格。

如果最多只允许您完成一笔交易(即买入一股和卖出一股股票),请设计一个算法来找到最大利润。

请注意,您不能在买入股票之前卖出股票。

示例 1:

Input: [7,1,5,3,6,4]
Output: 5
Explanation: Buy on day 2 (price = 1) and sell on day 5 (price = 6), profit = 6-1 = 5.
Not 7-1 = 6, as selling price needs to be larger than buying price.

示例 2:

Input: [7,6,4,3,1]
Output: 0
Explanation: In this case, no transaction is done, i.e. max profit = 0.

我相信这个问题可以用动态规划来解决,在继续简单地解决这个问题之前,我尝试用我自己的方法来解决这个问题。我确实检查了暴力算法并意识到我的方法与暴力算法不相似

public class Solution {
public int maxProfit(int prices[]) {
int maxprofit = 0;
for (int i = 0; i < prices.length - 1; i++) {
for (int j = i + 1; j < prices.length; j++) {
int profit = prices[j] - prices[i];
if (profit > maxprofit)
maxprofit = profit;
}
}
return maxprofit;
}
}

这是我的方法

class Solution:
def maxProfit(self, prices: List[int]) -> int:
res=0
if not prices:
return 0
idx=prices.index(min(prices))
value=min(prices)
try:
for i in range (idx+1,len(prices)):
res=max(res,prices[i]-value)
except IndexError :
return 0
return res

我的代码通过了示例测试用例和 143/200 个用例,但在这个测试用例中失败了。

Input: [2,4,1]
Output: 0
Expected: 2

如何改进我的代码?我怎样才能使这种方法起作用?或者如果这种方法完全错误,请详细说明。

我相信我的方法的时间复杂度比蛮力要好,因此,努力使这段代码工作;稍后也检查动态编程方法

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com