Menu
CoddyTech

House Robber

Las casas están en fila a lo largo de una calle, y nums[i] es el dinero que hay en la casa i. Puedes tomar el dinero de las casas que quieras, pero nunca de dos casas que estén una junto a la otra. Devuelve el total más grande que puedas llevarte.

Función

rob(nums: integer-array) → integer
numsinteger-array
el dinero de cada casa, en el orden de la calle
Devuelveinteger
la cantidad total más grande que puedes tomar sin tomar dinero de dos casas adyacentes

Restricciones

  • 1 ≤ nums.length ≤ 104
  • 0 ≤ nums[i] ≤ 1000
  • La respuesta es como máximo 5 × 106, así que cabe en un entero con signo de 32 bits.

Ejemplos

Entrada
nums = [5, 3, 4, 11, 2]
Salida
16
Explicación
Toma 5 y 11 de las casas 0 y 3 para obtener 16. Se permite saltarse dos casas seguidas, y en este caso supera a cualquier otro plan: 5 + 4 + 2 = 11 y 3 + 11 = 14.
challenge icon

Para ir más allá

Devuelve las casas que hay que llevar y también el total. ¿Qué debes conservar de la tabla para reconstruir esa lista, y pueden hacerlo dos totales acumulados?

Restablecer código
def rob(nums):
    # Escribe el código aquí

Prueba #1

Prueba #2

Prueba #3

Argumento

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

Salida Esperada

16