Menu
CoddyTech

House Robber

Domy stoją w rzędzie 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 zabierając pieniędzy z dwóch sąsiadujących domów

Ograniczenia

  • 1 ≤ nums.length ≤ 104
  • 0 ≤ nums[i] ≤ 1000
  • Odpowiedź wynosi co najwyżej 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żesz pominąć dwa domy z rzędu i w tym przypadku jest to lepsze niż każdy inny plan: 5 + 4 + 2 = 11, a 3 + 11 = 14.

lock icon+16 ukrytych testów przy wysłaniu

challenge icon

Pytanie dodatkowe

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

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

Przypadek 1

Przypadek 2

Przypadek 3

Wejście

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

Oczekiwane

16