150 principais entrevistasMédio

Ladrão de Casa II

Guia detalhado e implementação de Python para o problema 'House Robber II'.

Declaração do problema

Médio

Você é um ladrão profissional que planeja roubar casas ao longo de uma rua. Cada casa tem uma certa quantia de dinheiro guardada. Todas as casas deste local estão dispostas em círculo. Isso significa que a primeira casa é vizinha da última. Enquanto isso, as casas adjacentes têm um sistema de segurança conectado, que entrará em contato automaticamente com a polícia se duas casas adjacentes forem invadidas na mesma noite.

Dado um array inteiro nums representando a quantidade de dinheiro de cada casa, retorne a quantia máxima de dinheiro que você pode roubar esta noite sem alertar a polícia.

Escreva uma função rob(nums: List[int]) -> int.

Restrições
  • 1 <= len(nums) <= 100
  • 0 <= nums[i] <= 1000

Exemplos

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?
Considere usar estruturas de dados 1D específicas de DP, como conjuntos ou heaps.
Edge Cases to Watch
  • Estruturas de entrada vazias
  • Entradas de elemento único
  • Grandes limites numéricos

Pronto para resolver?

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

Abrir no Editor
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

Recursos Python recomendados

Expanda seu conhecimento com tutoriais interativos relacionados, folhas de dicas e comparações de código.