レポートを解決証券を売買する[LeetCode] 121ベストタイム(パイソン)

免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
このリンク: https://blog.csdn.net/ttinch/article/details/102605921

レポートを解決証券を売買する[LeetCode] 121ベストタイム(パイソン)

トピック住所:https://leetcode.com/problems/best-time-to-buy-and-sell-stock/

タイトル説明

あなたはi番目の要素は、日に私与えられた株式の価格であるため、配列を持っていると言います。

あなただけ(すなわち、1つを購入し、株式1株を売却)で最大1つのトランザクションを完了することが許可された場合は、最大の利益を発見するアルゴリズムを設計します。

あなたがいずれかを購入する前に、あなたが株式を売却することはできません。

例1:

Input: [7,1,5,3,6,4]
Output: 5
Explanation: Buy on day 2 (price = 1) and sell on day 5 (price = 6), profit = 6-1 = 5.
             Not 7-1 = 6, as selling price needs to be larger than buying price.

例2:

Input: [7,6,4,3,1]
Output: 0
Explanation: In this case, no transaction is done, i.e. max profit = 0.

ソリューション

我々は、可変レコードトラバーサルGuoshu最小で、主アレイを横断するだけ必要があり、次いで、各大きな利益から選択更新する、各電流値と最も利益の最小値との差を算出します。次のように利益も、望まれる横断現在の完了後:

class Solution:
    def maxProfit(self, prices: List[int]) -> int:
        ans = 0
        min_p = 10000
        for i in range(len(prices)):
            ans = max(ans, prices[i]-min_p)
            min_p = min(min_p, prices[i])
        return ans

おすすめ

転載: blog.csdn.net/ttinch/article/details/102605921