Olá, seja bem vindo a mais um Resolvendo problemas no HackerRank: No caso de hoje, iremos cortar palitos para que eles estejam do mesmo tamanho e depois descartá-los. Vejamos mais informações com a explicação detalhada e sua resolução.
Cut the sticks -
Você recebe vários bastões de comprimentos variados. Você cortará iterativamente os palitos em palitos menores, descartando os pedaços mais curtos até não sobrar nenhum. Em cada iteração, você determinará o comprimento do bastão mais curto restante, cortará esse comprimento de cada um dos bastões mais longos e descartará todos os pedaços desse menor comprimento. Quando todos os bastões restantes tiverem o mesmo comprimento, eles não podem ser encurtados, então descarte-os.
Dados os comprimentos de N bastões, imprima o número de bastões restantes antes de cada iteração até que não reste nenhum.
Vejamos um exemplo:
- arr = [1,2,3]
O palito de menor comprimento é 1, logo cortamos esse comprimento dos dois mais longos e descarte os pedaços de comprimento de 1. Temos agora arr = [1,2]. Novamente, o palito mais curto tem comprimento 1, então cortamos essa quantidade do palito mais longo e descarte esses pedaços. Resta apenas, arr = [1], então o descartamos. O número de bastões em cada iteração será: [3,2,1].
- return: int[]: o número de sticks após cada iteração.
Vejamos o código em ação:
function cutTheSticks(arr) {
// Write your code here
let min = 0;
let count = 0;
let result = []
for(let wow = 0; wow < arr.length; wow += 1) {
let filtered = arr.filter((value) => value > 0);
count = 0;
min = filtered.sort((a, b) => a - b)[0];
for(let index = 0; index < arr.length; index += 1) {
if(arr[index] > 0) {
arr[index] = arr[index] - min;
count ++;
}
}
count > 0 && result.push(count);
}
return result;
}
O código utiliza dois loops for para iterar sobre o array "arr". Dentro do primeiro loop, é feita a filtragem dos valores maiores que zero do array "arr" e é armazenado em "filtered". Depois é definido o valor mínimo de "filtered" em "min". Em seguida, dentro do segundo loop, é verificado se o valor atual do array é maior que zero. Se sim, o valor é subtraído do valor mínimo encontrado em "filtered" e a variável "count" é incrementada. Esse segundo loop realiza a operação de corte dos bastões.
Fora dos loops, é verificado se "count" é maior que zero e se for, adiciona ao array "result". Ao final dos loops, "result" é retornado. O código utiliza o método "filter()" para filtrar os valores maiores que zero e o método "sort()" para ordenar o array em ordem crescente. A função também utiliza variáveis como "min", "count" e "result" para armazenar valores e realizar contagens.
Assim, concluímos mais um Resolvendo problemas no HackerRank: até a próxima.
Top comments (0)