<LeetCode天梯>Day004 买卖股票的最佳时机 II(DP动态规划法) | 初级算法 | Python

今天1024程序员节,车神哥在这里恭祝各位节日快乐,发量惊人,财务自由,从不加班!!!~

今天依旧和车神哥一起来提升自己的Python编程和面试能力吧,刷天梯~

以下为我的天梯积分规则

每日至少一题:一题积分+10分
若多做了一题,则当日积分+20分(+10+10)
若做了三道以上,则从第三题开始算+20分(如:做了三道题则积分-10+10+20=40;做了四道题则积分–10+10+20+20=60


初始分为100分
若差一天没做题,则扣积分-10分(周六、周日除外注:休息
坚持!!!


初级算法

刷题目录

数组

在这里插入图片描述

题干

给定一个数组 prices ,其中 prices[i] 是一支给定股票第 i 天的价格。

设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。

注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。

依旧还是这道题,我觉得题不适合做太快,一道题,多个思路,多重解法,同样会有很快的提升。

和上一篇的动态规划写法有所不同,但基本思想都是一致的。

class Solution:
    def maxProfit(self, prices: List[int]) -> int:
	   if not prices:
	            return 0
	        n = len(prices)
	        dp = [[0]*2 for _ in range(n)]
	        # dp[i][0]表示第i天不持有股票,dp[i][1]表示第i天持有股票
	        dp[0][0], dp[0][1] = 0, -prices[0]  # 设置初始值,第一天不持有股票则设置为0,持有股票,则为负当日股票价格
	        for i in range(1, n):
	            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[n-1][0]  # 输出最后一天不持有股票,也就是说已经卖完了

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
虽然效果不是很好,但是结果是很准确的。

鱼与熊掌不能兼得呀~

再次祝大家1024节日快乐~

Reference

  • 作者:力扣 (LeetCode)
    链接:https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/x2zsx1/
    来源:力扣(LeetCode)

今日得分:+10
总得分:140(更新算法方法-2021.10.24加10分)

加油!!!

❤坚持读Paper,坚持做笔记,坚持学习❤!!!
再加个坚持刷题!!!打天梯!!!
To Be No.1

⚡⚡


创作不易⚡,过路能❤关注收藏点个赞三连就最好不过了

ღ( ´・ᴗ・` )


逆着光行走,任风吹雨打。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

府学路18号车神

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值