ブラシタイトル53-マッサージ師

90. マッサージ師

トピックリンク

出典:滞在ボタン(LeetCode)
リンクします。https://leetcode-cn.com/problems/the-masseuse-lcci

タイトル説明

既知のマッサージセラピストは、予約要求の安定したストリームを受信する、予約は、各接続又は未接続のために選択することができます。彼女は隣の予定を受け入れることができなかったので、各予約サービスの間、休息する時間を持っています。予約要求、最適なセット(最長総予約)を見つけるためにマッサージセラピストの予約の順序を考えると、数分の合計数を返します。

注:この問題は、元のタイトルに比較的小さな変更であります

例1:

入力:[1,2,3,1]
出力:4
説明:予約番号と予約番号3、全長= 3 + 1 = 4を選択します。

例2:

入力:[2,7,9,3,1]
出力:12
説明:予約番号を選択し、3番及び5番予約予約、全長= 2 + 9 + 1 = 12。

例3:

入力:[2,1,4,5,3,1,1,3]
出力:12
説明:1つの選択番号の予約、予約番号3、第5号及び第8号予約予約、全長= 2 + 3 + 4 + 3 = 12。

キーテクノロジー

ダイナミックプログラミング

トピック分析

  1. NUMSが空の場合、0を返します。
  2. NUMS [0]とNUMS [1]に大きな値をとるので、1番または2番予定の予約から出発して決定。
  3. 最大位置i及びサブアレイを記憶するためDP [I]。
  4. [I-1]現在の要素(NUMS [I])+ DP [I-2] DPよりも大きいか否かを決定しなければならないので、予約に隣接した位置が、確保できない場合は、状態遷移方程式を記述することが可能である:DP [I] = math.max(DP [I-1]、DP [I-2] + NUMS [I])。
/ ** 
 * @param {数[]} NUMS 
 * @return {数} 
 * / 
VARマッサージ=関数(NUMS){ 
    LEN = nums.lengthましょう。
    IF(LEN === 0 || NUMS == null)のリターン0; 
    
    DPましょう=新しいアレイ(LEN).fill(0); 
    DP [0] = NUMS [0]。
    DP [1] = Math.max(NUMS [0]、NUMS [1])。
    {(; I <lenのI ++ iは2 =せて)のために
        、DP [I] = Math.max(DP [I-1]、DP [I-2] + NUMS [I])。
    } 
    戻りDP [LEN-1]。
}。

  

おすすめ

転載: www.cnblogs.com/liu-xin1995/p/12562310.html