Menu
CoddyTech

House Robber

As casas ficam enfileiradas ao longo de uma rua, e nums[i] é o dinheiro na casa i. Você pode pegar o dinheiro de quaisquer casas que escolher, mas nunca de duas casas vizinhas. Retorne o maior total que você pode pegar.

Função

rob(nums: integer-array) → integer
numsinteger-array
o dinheiro em cada casa, na ordem da rua
Retornainteger
o maior total que você pode obter sem pegar dinheiro de duas casas adjacentes

Restrições

  • 1 ≤ nums.length ≤ 104
  • 0 ≤ nums[i] ≤ 1000
  • O resultado é, no máximo, 5 × 106, então cabe em um inteiro com sinal de 32 bits.

Exemplos

Entrada
nums = [5, 3, 4, 11, 2]
Saída
16
Explicação
Some 5 e 11 das casas 0 e 3 para obter 16. É permitido pular duas casas seguidas, e aqui isso supera todos os outros planos: 5 + 4 + 2 = 11 e 3 + 11 = 14.

lock icon+16 testes ocultos ao enviar

challenge icon

Para ir além

Retorne as casas a serem consideradas, bem como o total. O que você precisa manter da tabela para reconstruir essa lista, e os dois totais acumulados ainda conseguem fazer isso?

Redefinir código
def rob(nums):
    # Escreva o código aqui
Casos de teste

Caso 1

Caso 2

Caso 3

Entrada

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

Esperado

16