Menu
CoddyTech

House Robber

Le case sono disposte in fila lungo una strada e nums[i] è il denaro nella casa i. Puoi prendere il denaro da qualsiasi casa tu scelga, ma mai da due case adiacenti. Restituisci il totale più alto che puoi prendere.

Funzione

rob(nums: integer-array) → integer
numsinteger-array
il denaro in ogni casa, nell’ordine della strada
Restituisceinteger
il totale più grande che puoi ottenere senza prendere da due case adiacenti

Vincoli

  • 1 ≤ nums.length ≤ 104
  • 0 ≤ nums[i] ≤ 1000
  • La risposta è al massimo 5 × 106, quindi rientra in un intero con segno a 32 bit.

Esempi

Input
nums = [5, 3, 4, 11, 2]
Output
16
Spiegazione
Prendi 5 e 11 dalle case 0 e 3 per ottenere 16. È consentito saltare due case di fila e, in questo caso, è la scelta migliore: 5 + 4 + 2 = 11 e 3 + 11 = 14.
challenge icon

Per approfondire

Restituisci le case da prendere e anche il totale. Cosa devi conservare della tabella per ricostruire quell’elenco, e possono bastare ancora due totali progressivi?

Ripristina il codice
def rob(nums):
    # Scrivi il codice qui

Test #1

Test #2

Test #3

Argomento

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

Output atteso

16