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
  • A resposta é no máximo 5 × 106, então cabe em um inteiro de 32 bits com sinal.

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 qualquer outro plano: 5 + 4 + 2 = 11 e 3 + 11 = 14.
challenge icon

Para ir além

Retorne as casas que devem ser levadas, assim como o total. O que você precisa guardar da tabela para reconstruir essa lista, e dois totais acumulados ainda podem fazer isso?

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

Teste #1

Teste #2

Teste #3

Argumento

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

Saída Esperada

16