本文共 918 字,大约阅读时间需要 3 分钟。
为了解决这个问题,我们需要设计一个算法来计算在给定股票价格数组中能够获得的最大利润。我们可以尽可能地完成更多的交易(多次买卖一支股票),但必须保证每次购买前出售掉之前的股票。
我们可以使用贪心算法来解决这个问题。贪心算法在这里的思路是,每当我们看到股票价格比上一天高时,就立即卖出,这样可以记录每次的小利润,从而累积起来得到最大利润。这种方法的时间复杂度是 O(n),非常高效。
具体来说,我们遍历价格数组,从第二个元素开始检查每个元素是否大于前一个元素。如果是,则计算这次卖出的利润,并累加到总利润中。如果不是,则不进行任何操作。这种方法确保了我们在每次能够获得正利润时都立即卖出,从而最大化总利润。
def maxProfit(prices): if len(prices) <= 1: return 0 max_profit = 0 prev_price = prices[0] for current_price in prices[1:]: if current_price > prev_price: max_profit += current_price - prev_price prev_price = current_price else: prev_price = current_price return max_profit
max_profit
为 0,用于记录总的最大利润。prev_price
记录前一个股票价格,初始化为第一个价格。max_profit
中,然后更新 prev_price
为当前价格。如果不是,则保持 prev_price
为当前价格。这种方法确保了我们在每次能够获得正利润时都立即卖出,从而累积了最大的利润,适用于多次交易的情况。
转载地址:http://zhgyk.baihongyu.com/