Python3 Beute Problem erreichen

Python3 Beute Problem erreichen

Originaltitel https://leetcode-cn.com/problems/house-robber/

Sie sind ein professioneller Dieb Straße Plan des Hauses zu stehlen. Jedes Zimmer ist im Besitz von etwas Bargeld, beeinflussen die einzigen Einschränkungen deines Nächstes Haus stehlen ist mit Anti-Diebstahl - System miteinander kommunizieren, wenn zwei benachbarte Häuser in der gleichen Nacht, Diebe Einbruch in das System automatisch Alarm .
Bei einem Vertreter aus jeder nicht negativen ganzen Zahl Array von Speichermenge Gehäuse in Fall berechnet man nicht die Alarmeinrichtung berührt, kann die maximale Menge stehlen.

Beispiel 1:

输入: [1,2,3,1]
输出: 4
解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。
     偷窃到的最高金额 = 1 + 3 = 4 。

Beispiel 2:

输入: [2,7,9,3,1]
输出: 12
解释: 偷窃 1 号房屋 (金额 = 2), 偷窃 3 号房屋 (金额 = 9),接着偷窃 5 号房屋 (金额 = 1)。
     偷窃到的最高金额 = 2 + 9 + 1 = 12 。

Problemlösung:

class Solution:
    def rob(self, nums: List[int]) -> int:
        n = len(nums)
        if n == 0:
            return 0
        if n == 1:
            return nums[0]
        if n == 2:
            return max(nums[0], nums[1])
        e0 = 0
        e1 = nums[0]
        e2 = max(nums[0], nums[1]) #动态规划思路,但是只需要3个中间值
        for i in range(3, n + 1):
            e0, e1, e2 = e1, e2, max(nums[i-1] + e1, nums[i-2] + e0)
        return e2
Veröffentlicht 24 Originalarbeiten · erntete Lob 0 · Aufrufe 417

Ich denke du magst

Origin blog.csdn.net/qq_18138105/article/details/105166013
Empfohlen
Rangfolge