【Leetcode】【簡単】【122.株を売買するベストタイミングII】【JavaScript】

2017 ワード

タイトルの説明


 

122.株の売買に最適なタイミングII


配列が与えられ、そのi番目の要素は、与えられた株のi日目の価格です.
あなたが得られる最大利益を計算するアルゴリズムを設計します.できるだけ多くの取引(株を複数回売買する)を完了することができます.
注意:複数の取引に同時に参加することはできません(再購入前に前の株を売却しなければなりません).
 

例1:


入力:[7,1,5,3,6,4]出力:7解釈:2日目(株価=1)に購入し、3日目(株価=5)に売却し、この取引所は利益=5-1=4を得ることができる.その後、4日目(株価=3)に購入し、5日目(株価=6)に売却し、この取引所は利益=6-3=3を得ることができる.

例2:


入力:[1,2,3,4,5]出力:4解釈:1日目(株価=1)に購入し、5日目(株価=5)に売却し、この取引所は利益=5-1=4を得ることができる.1日目と2日目に株を相次いで購入してから売ることはできないことに注意してください.これは同時に複数の取引に参加しているので、再購入する前に前の株を売却しなければなりません.

例3:


入力:[7,6,4,3,1]出力:0解釈:この場合、取引が完了しないため、最大利益は0である.
 
ソース:力ボタン(LeetCode)リンク:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-ii著作権はインターネットの所有に帰属する.商業転載は公式の授権に連絡してください.非商業転載は出典を明記してください.
 

 


回答:


 
個人は題意に従って、1つの配列を理解して、インデックスの順序に従って、もし後ろの1つの値が前の1つの値より大きいならば、利益があって、大きく減少して、変数profitに累積して、最後にprofitに戻ります;
 
/**
 * @param {number[]} prices
 * @return {number}
 */
var maxProfit = function(prices) {
    if(prices.length === 0)return 0
    let profit = 0
   for(let i = 1; i){ if(prices[i]>prices[i-1]){ profit += prices[i] - prices[i-1] } } return profit };