Leetcode - 买卖股票的最佳时机

Leetcode - 买卖股票的最佳时机_第1张图片
解题思路:(python3)
该题类似于寻找最大子序和。同样的,若采用暴力法一一遍历或者记录都将超出时间限制或者内存限制。但是股票的最大利润是排在相对后方的较大元素与排在相对前方的较小元素之差,故想到可以通过先寻找并记录最小元素,然后再利用做差比较找到最大差值,此时不用担心最大元素排在最小元素之前,若排在最小元素之前则利润为负值,返回0。

class Solution:
    def maxProfit(self, prices: List[int]) -> int:
        n=len(prices)
        if n==0 or n==1:
            return 0
        minprice=prices[0]
        profit=0
        for i in range(1,n):
            if prices[i]<minprice:
                minprice=prices[i]
            if prices[i]-minprice>profit:
                profit=prices[i]-minprice
        return profit

Leetcode - 买卖股票的最佳时机_第2张图片

你可能感兴趣的:(Leetcode练习)