タイトル説明
122銘柄IIを取引するための最良の時間
i番目の要素が与えられた株式のi日の価格である配列を、与えられました。
あなたが得ることができる最大の利益を計算するアルゴリズムを設計します。あなたは、可能な限り(株式を売買)より取引を閉じることができます。
注:同時に複数のトランザクション(あなたは秋の前に再び株式を購入する前に売却しなければならない)に関与することはできません。
例1:
入力:[7,1,5,3,6,4]
出力:7
説明:2日目(= 1つの株価)、買って、3日目(株価= 5)で販売する場合、この取引は= 5-1 = 4を利益を得ることができます。
売り切れの際はその後、5日目(株価= 6)で購入し、4日目(株価= 3)に、この取引は= 6-3 = 3を利益を得ることができます。
例2:入力:[1,2,3,4,5]
出力:4を
説明する:(株価= 1)売却したときに、5日目(株価= 5)に、1日目に購入する際、これを取引所は、利益= 5-1 = 4することができます。
あなたは、彼らが販売されて、その後の後、1日2一連の株式を購入することができないことに注意してください。
それは複数のトランザクションに関与し、同じ時間に属しているので、あなたは再び購入する前に秋の前に在庫を売却しなければなりません。
例3:入力:[7,6,4,3,1]
出力:0を
説明する。この場合、トランザクションが完了していない、最大の利益はゼロです。
出典:滞在ボタン(LeetCode)
リンクします。https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-ii
すべてのネットワークからの控除が著作権を保有。商業転載は許可公式、非商用の転載は、ソースを明記してくださいお問い合わせください。
回答:
個人的な質問は、配列インデックス順序に従ってとして理解されることが意図される、後者の値が前回値よりも大きい場合、利益があり、それは、大きなに低減可変利益に蓄積し、最終的に利益を返します。
/ * * * @param {数[]}価格 * @return {数} * / VARの maxProfit = 関数(価格){ 場合(prices.length === 0)戻り 0 LET利益 = 0
のための(I = 1せ;私は<prices.length; iが++ ){ 場合(価格[I]>価格[I-1 ]){ 利益 + =価格[I] -価格[I-1 ] } } 戻り利益 }。