Menu
CoddyTech

House Robber

Entlang einer Straße stehen Häuser in einer Reihe, 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 den größtmöglichen Gesamtbetrag zurück, den 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 und passt daher 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, das ergibt 16. Es ist erlaubt, zwei Häuser hintereinander zu überspringen, und hier ist das besser als jeder andere Plan: 5 + 4 + 2 = 11 und 3 + 11 = 14.

lock icon+16 versteckte Tests beim Einreichen

challenge icon

Weiterführende Frage

Gib die zu nehmenden Häuser sowie die Gesamtzahl zurück. Was musst du aus der Tabelle behalten, um diese Liste wieder aufzubauen, und können die beiden laufenden Summen das noch leisten?

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

Fall 1

Fall 2

Fall 3

Eingabe

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

Erwartet

16