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 dalle case che vuoi, ma mai da due case adiacenti. Restituisci il totale massimo che puoi prendere.

Funzione

rob(nums: integer-array) → integer
numsinteger-array
il denaro in ogni casa, nell’ordine della via
Restituisceinteger
il totale più grande che puoi prendere 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, è meglio di qualsiasi altro piano: 5 + 4 + 2 = 11 e 3 + 11 = 14.

lock icon+16 test nascosti all’invio

challenge icon

Per approfondire

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

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

Caso 1

Caso 2

Caso 3

Input

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

Atteso

16