leetcode 买股票的最佳时机

题目:输入【7,1,5,3,6,4】  输出最大利润6-1=5

方法:动态规划

题解:max_profit=[0,0,0,0,0,0] 存放当前最大利润,min_price=price[0]为最小价格,初始化为第一天的价格,

          max_profit[i] 为前i天的最大利润。

          当前的最大利润 = max【之前的最大利润,当前的最大利润】max_profit [i]= max[max_profit[i-1],prices[i]-min_price]

          当前的最大利润 = 当前卖出价格 - 最小买入价格

          最小买入价格 = min【最小买入价格,当前买入价格】 min_price = min[min_price,pric

class Solution:
    def maxProfit(self, prices: List[int]) -> int:
        n = len(prices)
        if n == 0: return 0 # 边界条件
        max_profit = [0] * n
        min_price = prices[0] 

        for i in range(1, n):
            min_price = min(min_price, prices[i])
            max_profit = max(max_profit[i - 1], prices[i] - min_price)

        return max_profit[-1]

i=1 min_profit=min[7,1]=1    max_profit[1] = max[0,1-1]=0 max_profit=[0,0,0,0,0,0]

i=2 min_profit=min[1,5]=1    max_profit[1] = max[0,5-1]=4 max_profit=[0,0,4,0,0,0]

i=3 min_profit=min[1,3]=1    max_profit[1] = max[4,3-1]=4 max_profit=[0,0,4,4,0,0]

i=4 min_profit=min[1,6]=1    max_profit[1] = max[4,6-1]=5 max_profit=[0,0,4,4,5,0]

i=5 min_profit=min[1,4]=1    max_profit[1] = max[5,4-1]=5 max_profit=[0,0,4,4,5,5]

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值