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 llevarte el dinero de las casas que elijas, pero nunca de dos casas que estén una al lado de la otra. Devuelve la cantidad total máxima que puedes llevarte.

Función

rob(nums: integer-array) → integer
numsinteger-array
el dinero de cada casa, en el orden de la calle
Devuelveinteger
la suma máxima que puedes llevarte sin tomar nada 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.

lock icon+16 pruebas ocultas al enviar

challenge icon

Para ir más allá

Devuelve las casas que se deben llevar, así como el total. ¿Qué tienes que conservar de la tabla para reconstruir esa lista, y los dos totales acumulados aún pueden hacerlo?

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

Caso 1

Caso 2

Caso 3

Entrada

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

Esperado

16