Menu
CoddyTech

House Robber

Дома стоят в ряд вдоль улицы, а nums[i] — это сумма денег в доме i. Ты можешь взять деньги из любых домов на свой выбор, но никогда не бери деньги из двух домов, стоящих рядом. Верни наибольшую сумму, которую можешь взять.

Функция

rob(nums: integer-array) → integer
numsinteger-array
сумма денег в каждом доме в порядке следования по улице
Возвращаетinteger
наибольшая сумма, которую можно получить, не забирая деньги из двух соседних домов

Ограничения

  • 1 ≤ nums.length ≤ 104
  • 0 ≤ nums[i] ≤ 1000
  • Ответ не превышает 5 × 106, поэтому он помещается в знаковое 32-битное целое число.

Примеры

Ввод
nums = [5, 3, 4, 11, 2]
Вывод
16
Пояснение
Возьми 5 и 11 из домов 0 и 3, чтобы получить 16. Можно пропустить два дома подряд, и в этом случае такой вариант лучше всех остальных: 5 + 4 + 2 = 11 и 3 + 11 = 14.

lock icon+16 скрытых тестов при отправке

challenge icon

Дополнительный вопрос

Верни дома, которые нужно забрать, а также общую сумму. Что нужно сохранить из таблицы, чтобы восстановить этот список, и смогут ли два текущих итога по-прежнему это сделать?

Сбросить код
def rob(nums):
    # Напишите код здесь
Тестовые случаи

Случай 1

Случай 2

Случай 3

Ввод

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

Ожидается

16