Menu
CoddyTech

House Robber

Domy stoją wzdłuż ulicy, a nums[i] to kwota pieniędzy w domu i. Możesz zabrać pieniądze z dowolnie wybranych domów, ale nigdy z dwóch sąsiadujących ze sobą. Zwróć największą sumę, jaką możesz zabrać.

Funkcja

rob(nums: integer-array) → integer
numsinteger-array
pieniądze w każdym domu, w kolejności wzdłuż ulicy
Zwracainteger
największa łączna kwota, jaką możesz zabrać, nie okradając dwóch sąsiadujących domów

Ograniczenia

  • 1 ≤ nums.length ≤ 104
  • 0 ≤ nums[i] ≤ 1000
  • Wynik jest nie większy niż 5 × 106, więc mieści się w 32-bitowej liczbie całkowitej ze znakiem.

Przykłady

Wejście
nums = [5, 3, 4, 11, 2]
Wyjście
16
Wyjaśnienie
Weź 5 i 11 z domów 0 i 3, aby uzyskać 16. Można pominąć dwa domy z rzędu, a w tym przypadku ten plan przewyższa wszystkie pozostałe: 5 + 4 + 2 = 11 i 3 + 11 = 14.
challenge icon

Pytanie dodatkowe

Zwróć domy do zabrania oraz ich łączną liczbę. Co musisz zachować z tabeli, aby odtworzyć tę listę, i czy dwa bieżące sumatory nadal wystarczą?

Zresetuj kod
def rob(nums):
    # Napisz kod tutaj

Test #1

Test #2

Test #3

Argument

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

Oczekiwany wynik

16