LeetCode #122. Best Time to Buy and Sell Stock II

题目

122. Best Time to Buy and Sell Stock II


解题方法

这道题有两种解决办法,第一种是找到峰值和谷值并计算最大利润,第二种是用了累加的思想,对峰谷值方法进行了简化。

峰谷值法:遍历数组找先到第一个谷值,再找到第一个峰值,计算差值加到最大利润中,然后再从当前位置找下一个谷值和峰值,直到结束。

改进版:遍历数组,如果当前位置的价格比前一位高,就把差价加到总利润中,直到结束。


代码

峰谷值法

class Solution:
    def maxProfit(self, prices: List[int]) -> int:
        maxprofit = 0
        i = 0
        
        while i < len(prices) - 1:
            while i < len(prices) - 1 and prices[i] >= prices[i+1]:
                i += 1
            valley = prices[i]
            while i < len(prices) - 1 and prices[i] <= prices[i+1]:
                i += 1
            peak = prices[i]
            maxprofit += peak - valley
        
        return maxprofit

改进

class Solution:
    def maxProfit(self, prices: List[int]) -> int:
        maxprofit = 0
        
        for i in range(1, len(prices)):
            if prices[i] > prices[i-1]:
                maxprofit += prices[i] - prices[i-1]
        
        return maxprofit
posted @ 2020-10-22 11:09  老鼠司令  阅读(77)  评论(0)    收藏  举报