Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

99
Visualizações
El problema de House Robber 2 Leetcode da una salida incorrecta

Estoy resolviendo el problema de Leetcode House Robber II. El problema dice,

Given an integer array nums representing the amount of money of each house, return the maximum amount of money you can rob tonight without alerting the police. The constraint is you can not rob two adjacent houses. Also, the houses in that place are arranged in a circle, so the first and last houses are also adjacent.

Aquí está el enlace: https://leetcode.com/problems/house-robber-ii/

He usado el enfoque de arriba hacia abajo para resolverlo. Esta es la definición de la función: dp(index, isFirstHouseRobbed) En el cuerpo de la función, estoy comprobando if(index === nums.length - 1 && isFirstHouseRobbed === true) return 0; . Aquí está la función completa:

 var rob = function(nums) { const dp = (index, isFirstHouseRobbed) => { if (index >= nums.length) { return 0; } if (index === nums.length - 1 && isFirstHouseRobbed === true) { return 0; } if (index === 0) { // Two choice: rob or not rob // rob let max1 = dp(index + 2, true) + nums[index]; // not rob let max2 = dp(index + 1, false); return Math.max(max1, max2); } else { // Two choice: rob or not rob // rob let max1 = dp(index + 2, false) + nums[index]; // This does not work // --->(line 20) let max1 = dp(index + 2, isFirstHouseRobbed) + nums[index]; // But this works. // not rob let max2 = dp(index + 1, false); // This does not work // --->(line23) let max2 = dp(index + 1, isFirstHouseRobbed); // But This works. return Math.max(max1, max2); } } return dp(0, false); };

Esta solución solo funciona si uso line20 y line23 . La única diferencia entre esas dos líneas y sus líneas anteriores es que estoy usando la variable isFirstHouseRobbed en lugar de pasar false . Mi pregunta es, en la llamada de función principal estoy llamando a dp(0, false) . Por lo tanto, el valor de isFirstHouseRobbed debe establecerse en false . Mi pregunta es, ¿por qué usar false en lugar de isFirstHouseRobbed no funciona, donde el valor de isFirstHouseRobbed se establece en false de todos modos? Tal vez me estoy perdiendo algo fácil, pero no pude resolverlo. Cualquier ayuda sería muy apreciada.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

No siempre es false ; uno de sus casos recursivos pasa true para el segundo parámetro. Esto tiene sentido: no tendría mucho sentido que fuera un parámetro si nunca cambiara.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda