📅  最后修改于: 2023-12-03 15:28:26.983000             🧑  作者: Mango
这个问题是一个经典的股票买卖问题,题目描述如下:
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。
你可以对这个股票进行任意次数的交易(即买入和卖出股票),但是必须遵循以下规则:
设计一个函数,计算你所能获得的最大利润。
这个问题可以使用贪心算法来解决。记录买入股票的最低价格和最高卖出股票的最高价格。只要卖出价格比买入价格高加上手续费,就可以卖出。
def max_profit(prices: List[int], fee: int) -> int:
if not prices:
return 0
n = len(prices)
buy = prices[0] + fee
profit = 0
for i in range(1, n):
if prices[i] + fee < buy:
buy = prices[i] + fee
elif prices[i] > buy:
profit += prices[i] - buy
buy = prices[i]
return profit
时间复杂度:O(n),只需要遍历一次数组。
空间复杂度:O(1),只使用了常量级别的额外变量。