【动态规划】--买卖股票的最佳时机

本文介绍了如何使用Python解决股票交易中获取最大利润的算法。通过遍历股票价格数组,找到最低价格作为买入点,然后计算当前价格与最低价格之差作为最大利润。两种不同实现方式被展示,一种是简单的迭代,另一种是使用列表推导式。时间复杂度为O(n),空间复杂度为O(1)。适合想要系统学习算法和提升编程技巧的读者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


活动地址:优快云21天学习挑战赛

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您:
想系统/深入学习某技术知识点…
一个人摸索学习很难坚持,想组团高效学习…
想写博客但无从下手,急需写作干货注入能量…
热爱写作,愿意让自己成为更好的人…

PS:恰好也有学习经典算法的计划,顺便mark一下~

题目:

给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。

你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。

返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。

代码:

class Solution:
    def maxProfit(self, prices: List[int]) -> int:
        # total=0
        # for i in range(len(prices)-1 ):
        #     if prices[i+1]>prices[i]:
        #         total=total+prices[i+1]-prices[i]
        # return total
        r = 0
        min_price = float('inf')  # float('inf')表示负无穷
        for price in prices:
            min_price = min(min_price, price)  # 截止到当前的最低价(买入价)
            r = max(r, price - min_price)  # 截止到目前的最高利润
        return r


    def best(self,prices: List[int])->int:
        return sum([prices[i+1]-prices[i] for i in range(len(prices)-1) if prices[i+1]>prices[i]])

学习日记

**
1,学习知识点

  • 时间复杂度:O(n),遍历了一遍数组。
  • 空间复杂度:O(1),使用了有限的变量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值