Olá, seja bem vindo a mais um Resolvendo problemas no HackerRank: No caso de hoje, você é um rei que está dividindo a comida para o povo, pois tempos difíceis chegaram e o povo passa por dificuldades. Vejamos mais informações com a explicação e sua resolução.
Fair Rations -
Você é o governante benevolente do Castelo Rankhacker e hoje está distribuindo pão. Seus súditos estão em fila e alguns deles já têm alguns pães. Os tempos são difíceis e os estoques de alimentos do seu castelo estão diminuindo, então você deve distribuir o menor número possível de pães de acordo com as seguintes regras:
Cada vez que você dá um pão para alguém
i
, você também deve dar um pão para a pessoa imediatamente à frente ou atrás deles na fila (ou seja, pessoasi
+ 1 oui
-1)Depois que todo o pão for distribuído, cada pessoa deve ter um número par de pães.
Dado o número de pães já possuído por cada cidadão, encontre e imprima o número mínimo de pães que você deve distribuir para satisfazer as duas regras acima. Se isso não for possível, imprima NO.
Vejamos o código a seguir:
function fairRations(B) {
// Write your code here
let c = 0
for (let i=0; i<B.length-1;i++) {
if (B[i] % 2 !== 0) {
B[i]++
B[i+1]++
c+=2
}
}
return (B[B.length-1] % 2 == 0) ? c : 'NO'
}
No código acima criamos uma variável c com valor inicial 0. Criamos também uma estrutura de repetição que irá passar por dentro do comprimento de B
- 1, e adicionar +1. Se o index de B tiver o restante divisível por 2 diferente de 0, devemos adicionar 1 ao index do array dentro de B, e adicionar 1 ao array index e a propriedade B
e por fim adicionar 2 a variável c
. Retornarmos ao final o array de B com seu comprimento -1 e seu restante divisível por 2 idêntico a 0. Caso contrário, retornaremos uma string escrita "NO", onde iremos dizer que o rei não conseguiu dividir os alimentos.
O resultado será:
5
2 3 4 5 6
input: 4
Assim, concluímos mais um Resolvendo problemas no HackerRank: até a próxima.
Top comments (0)