150 najlepszych wywiadówŚredni

Rabuś domowy II

Szczegółowy przewodnik i implementacja Python dla problemu „House Robber II”.

Oświadczenie o problemie

Średni

Jesteś zawodowym rabusiem planującym okradać domy wzdłuż ulicy. W każdym domu przechowywana jest określona ilość pieniędzy. Wszystkie domy w tym miejscu są ułożone w okrąg. Oznacza to, że pierwszy dom jest sąsiadem ostatniego. Tymczasem do sąsiednich domów podłączony jest system bezpieczeństwa, który automatycznie skontaktuje się z policją, jeśli tej samej nocy włamano się do dwóch sąsiednich domów.

Biorąc pod uwagę tablicę liczb całkowitych nums reprezentującą kwotę pieniędzy w każdym domu, zwróć maksymalną kwotę pieniędzy, jaką możesz obrabować dziś wieczorem, bez powiadamiania policji.

Napisz funkcję rob(nums: List[int]) -> int.

Ograniczenia
  • 1 <= len(nums) <= 100
  • 0 <= nums[i] <= 1000

Przykłady

Example 1
Input
nums = [2,3,2]
Output
3
Explanation

You cannot rob house 1 and house 3 because they are adjacent in the circular layout.

Example 2
Input
nums = [1,2,3,1]
Output
4
Explanation

Rob house 1 (money = 1) and rob house 3 (money = 3). Total = 4.

Need a Hint?
Rozważ użycie struktur danych specyficznych dla 1D DP, takich jak zestawy lub sterty.
Edge Cases to Watch
  • Puste struktury wejściowe
  • Wejścia jednoelementowe
  • Duże granice liczbowe

Gotowy do rozwiązania?

Open the problem in PyRun's browser-based Python editor. Your code runs fully offline — no server required.

Otwórz w Edytorze
Found this breakdown helpful?

PyRun is built and maintained by an independent solo developer. If this helped your interview prep, consider buying a coffee!

Buy me a coffee

Polecane zasoby Pythona

Poszerzaj swoją wiedzę dzięki powiązanym interaktywnym samouczkom, ściągawkom i porównaniom kodów.