【leetcode】Interviewfrage 17.16 Masseurin (implementiert von js)

1. Thema

Interviewfrage 17.16 Masseur
Bildbeschreibung hier einfügen

2. Idee (Dynamische Programmierung)

  1. Verwenden Sie dp[i], um die optimale Gesamtzahl von Minuten aufzuzeichnen, wenn die Länge i+1 ist, zum Beispiel: dp[0] ist die optimale Lösung, wenn die Länge 1 ist.
  2. Initialisieren Sie dp, wenn i = 0, ist es das erste Element des Arrays, nämlich nums[0]; wenn i = 1, wählen Sie das größte der ersten beiden Elemente aus, nämlich Math.max(nums[0],nums [1 ]).
  3. Nach i = 2 hat dp[i] zwei Fälle, je nachdem, ob das aktuelle Element nums[i] ausgewählt ist. Wenn Sie nums[i] wählen, können Sie nums[i-1] nicht wählen. Zu diesem Zeitpunkt ist die optimale Lösung: dp[i] = dp[i - 2] + nums[i]; wenn Sie nums nicht wählen [i], dann können Sie nums[i -1] wählen, was die optimale Lösung dp[i-1] ist, wenn i - 1. Wählen Sie den größten dieser beiden Werte als dp[i].
  4. Schließlich geben Sie einfach den dp-Wert des Index n - 1 zurück.

3. Code-Implementierung

/**
 * @param {number[]} nums
 * @return {number}
 */
var massage = function(nums) {
    
    
    const n = nums.length
    if (n === 0) return 0
    let dp = []
    dp[0] = nums[0]
    dp[1] = Math.max(nums[0], nums[1])
    for (let i = 2; i < n; i++) {
    
    
        dp[i] = Math.max(dp[i - 1], nums[i] + dp[i - 2])
    }
    // console.log(dp);
    return dp[n - 1]
};

4. Referenz

Interviewfrage 17.16 Masseur

Supongo que te gusta

Origin blog.csdn.net/weixin_44109827/article/details/129434821
Recomendado
Clasificación