返回
小六六带你刷力扣贪心算法之股票买卖的最佳时机2
后端
2024-01-04 00:18:38
各位观众老爷大家好,小六六来啦。今天,我将继续带大家一起刷一道关于贪心算法的力扣题目,题目是“买卖股票的最佳时机2”。
题目分析
这道题的题目要求我们找到股票的最佳买卖时机,以便获得最高的利润。题目中假设我们只能买卖一次股票,即买入股票后只能卖出一次,反之亦然。
为了解决这道题,我们可以使用贪心算法。贪心算法是一种在每一步都做出当前最优选择的方法。在解决这道题时,我们可以在每一天都检查当前的股票价格,如果当前股票价格低于我们买入股票的价格,则将买入股票的价格更新为当前股票价格,并将卖出股票的价格也更新为当前股票价格。如果当前股票价格高于我们卖出股票的价格,则将卖出股票的价格更新为当前股票价格,并计算出当前的利润。如果当前利润大于我们之前获得的最大利润,则将最大利润更新为当前利润。
按照这种方法,我们可以在遍历整个股票价格数组后得到最大的利润。
算法实现
def maxProfit(prices):
maxProfit = 0
buyDay = 0
sellDay = 0
currentDay = 0
for i in range(1, len(prices)):
if prices[i] < prices[buyDay]:
buyDay = i
sellDay = i
elif prices[i] > prices[sellDay]:
sellDay = i
currentProfit = prices[sellDay] - prices[buyDay]
if currentProfit > maxProfit:
maxProfit = currentProfit
return maxProfit
# 测试代码
prices = [7, 1, 5, 3, 6, 4]
print(maxProfit(prices)) # 输出:5
算法复杂度分析
这道题的算法复杂度是O(n),其中n是股票价格数组的长度。这是因为我们在算法中使用了一个循环来遍历股票价格数组,而在循环中,我们只需要进行一些简单的比较和计算,因此算法的复杂度是线性的。
总结
这道题是一道典型的贪心算法题目。通过使用贪心算法,我们可以找到股票的最佳买卖时机,以便获得最高的利润。这道题的算法复杂度是O(n),其中n是股票价格数组的长度。