<LeetCode天梯>Day004 买卖股票的最佳时机 II(DP动态规划法) | 初级算法 | Python
【摘要】 今天依旧和车神哥一起来提升自己的Python编程和面试能力吧,刷天梯~以下为我的天梯积分规则:每日至少一题:一题积分+10分 若多做了一题,则当日积分+20分(+10+10)若做了三道以上,则从第三题开始算+20分(如:做了三道题则积分-10+10+20=40;做了四道题则积分–10+10+20+20=60)初始分为100分若差一天没做题,则扣积分-10分(周六、周日除外注:休息)坚持!!!...
今天依旧和车神哥一起来提升自己的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⚡⚡哈哈哈哈
⚡创作不易⚡,过路能❤关注、收藏、点个赞❤三连就最好不过了
ღ( ´・ᴗ・` )
❤
『
逆着光行走,任风吹雨打。
』
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)