数据结构之买卖股票的最佳时机Ⅱ

(leetcode刷题)

买卖股票的最佳时机Ⅱ

  题目: 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。
  示例: 输入: [7,1,5,3,6,4];输出: 7(第2天买入,第3天卖出,第4天买入,第4天卖出,共计利润7)
 

方法

  • 和上次的买卖股票的题一样,用动态规划的方法。这次的题不需要限制买卖次数,所以可以直接去掉代表次数的kmax
class Solution:    
def maxProfit(self, prices: List[int]) -> int:        
    lens = len(prices)         
    if lens < 2:return 0        
    dp= [[0, 0] for i in range(lens)]        
    dp[0][0]=0        
    dp[0][1]=-prices[0]        
    for i in range(1, lens):             
        dp[i][0] = max(dp[i-1][0], dp[i-1][1] + prices[i])            
        dp[i][1] = max(dp[i-1][1], dp[i-1][0] - prices[i])                      
    return dp[-1][0]
发布了60 篇原创文章 · 获赞 2 · 访问量 1460

猜你喜欢

转载自blog.csdn.net/qq_40160983/article/details/105070848