Menu
CoddyTech

House Robber

Häuser stehen in einer Reihe entlang einer Straße, und nums[i] ist das Geld im Haus i. Du darfst das Geld aus beliebigen Häusern nehmen, aber niemals aus zwei Häusern, die nebeneinander stehen. Gib die größtmögliche Gesamtsumme zurück, die du nehmen kannst.

Funktion

rob(nums: integer-array) → integer
numsinteger-array
das Geld in jedem Haus, in der Reihenfolge der Straße
Gibt zurückinteger
die größte Gesamtsumme, die du mitnehmen kannst, ohne aus zwei benachbarten Häusern etwas mitzunehmen

Einschränkungen

  • 1 ≤ nums.length ≤ 104
  • 0 ≤ nums[i] ≤ 1000
  • Die Antwort beträgt höchstens 5 × 106, also passt sie in eine vorzeichenbehaftete 32-Bit-Ganzzahl.

Beispiele

Eingabe
nums = [5, 3, 4, 11, 2]
Ausgabe
16
Erklärung
Nimm 5 und 11 aus den Häusern 0 und 3, um 16 zu erhalten. Zwei Häuser hintereinander zu überspringen ist erlaubt, und hier ist das besser als jeder andere Plan: 5 + 4 + 2 = 11 und 3 + 11 = 14.
challenge icon

Weiterführende Frage

Gib die mitzunehmenden Häuser sowie die Gesamtzahl zurück. Was musst du aus der Tabelle behalten, um diese Liste wiederherzustellen, und können zwei laufende Summen das trotzdem leisten?

Code zurücksetzen
def rob(nums):
    # Schreibe hier den Code

Test #1

Test #2

Test #3

Argument

nums = [5, 3, 4, 11, 2]

Erwartete Ausgabe

16