Leetcode_1_Array_121_Best Time to Buy and Sell Stock

本文分享了一种优化股票买卖策略的方法,通过改进算法实现更高效的利润计算。原算法使用双重循环,效率较低,优化后的算法引入了当前最小价格和当前最大利润的概念,仅需一次循环即可完成计算,大幅提高了运行效率。

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

好气哦,我这方法总是会有一个实例通过不了,就是特别长的那个实例,paste如下,欢迎大家找到错误并在留言评论~~~

My wrong code:

class Solution(object):
    def maxProfit(self, prices):
        """
        :type prices: List[int]
        :rtype: int
        """
        if len(prices)==0 or len(prices)==1:
            return 0
        profit=0
       
        for i in range(len(prices)-1):
            for j in range(i+1,len(prices)):
                if prices[j]>prices[i]:
                    profit=max([profit,prices[j]-prices[i]])
        return profit

正确版本:

1.作者的思想肥肠巧妙,用到了两个肥肠有意义的概念!!!当前最小,当前最大!!!这种使用max(),min()函数实时更新的当前量可以减少循环层数,提高程序运行效率!!!

2.另外,有一点很有启发性,想获得当前最大,则可设初始值为0;想获得当前最小,可设初始值为正无穷,即float('inf').

Right Code:

class Solution(object):
    def maxProfit(self, prices):
        """
        :type prices: List[int]
        :rtype: int
        """
        max_profit=0
        min_price=float('inf')
        for price in prices:
            min_price=min(price,min_price)
            max_profit=max(price-min_price,max_profit)
        return max_profit

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值