DEV Community

Altencir Junior
Altencir Junior

Posted on

Resolvendo problemas no HackerRank: Vagas na linha de Serviço

Olá, seja bem vindo a mais um Resolvendo problemas no HackerRank: No caso de hoje, iremos analisar as vagas de uma estrada e dar o resultado do número de vagas possíveis. Vejamos mais informações com a explicação e sua resolução.

Service Lane -

Um motorista está dirigindo na rodovia. A luz de verificação do motor de seu veículo está acesa e o motorista deseja obter o serviço imediatamente. Felizmente, uma faixa de serviço corre paralela à rodovia. Varia em largura ao longo do seu comprimento.

Você receberá uma matriz de larguras em pontos ao longo da estrada ( índices ) e, em seguida, uma lista dos índices de pontos de entrada e saída. Considerando cada par de pontos de entrada e saída, calcule o tamanho máximo do veículo que pode trafegar com segurança naquele segmento da faixa de serviço.

Exemplo

  • n = 4
  • largura= [2, 3, 2, 1]
  • casos = [[1, 2], [2,4]]

Se o índice de entrada, i = 1 e a saída, j = 2, existem dois segmentos larguras de 2 e 3, respectivamente. O veículo mais largo que pode passar por ambos é 2. Se i = 2 e j = 4, as larguras são [3, 2, 1], o que limita a largura do veículo a 1.

Nosso objetivo: é a achar largura máxima do veículo que pode passar por cada segmento da faixa de serviço descrita

Confuso? Veja a tabela a seguir,acredito que com ela seja mais simples a compreensão:

8 5 n = 8, t = 5
2 3 1 2 3 2 3 3 width = [2, 3, 1, 2, 3, 2, 3, 3]
0 3 cases = [[0, 3], [4, 6], [6, 7], [3, 5], [0, 7]]
4 6
6 7
3 5
0 7

Saída:

1
2
3
2
1

Mas porquê esses resultados? Veja:

0: | |--| 2
1: | |---| 3
2: | |-| 1
3: | |--| 2
4: | |---| 3
5: | |--| 2
6: | |---| 3
7: | |---| 3

  • (0,3): Do índice 0 a 3, temos as larguras 2, 3, 1 e 2. Nada maior que 1 pode passar por todos os segmentos.
  • (4, 6): Do índice 4 ao 6, temos as larguras 3, 2 e 3. Nada mais largo que 2 pode passar por todos os
  • segmentos.
  • (6,7): 3, 33.
  • (3, 5): 2, 3, 22
  • (0,7): 2, 3, 1, 2, 3, 2, 3, 3 → 1.

Vejamos então uma forma de encontrar o resultado máximo que pode passar em cada uma das larguras, veja o algoritmo javaScript a seguir:

// Neste código,foi necessário fazer um alteração na linha let result = serviceLane(n, cases) e mudar para: let result = serviceLane(width, cases); e também alterar os parâmetros da função para os descritos a seguir:

function serviceLane(n, cases) {
    // Write your code here
  const arr = [];
    for (let item of cases) {
        arr.push(Math.min(...n.slice(item[0], item[1]+1)));
    }
    return arr;
}
Enter fullscreen mode Exit fullscreen mode

O código cria uma const que terá um array vazio e cria um lanço de repetição onde dentro terá uma variável chamada item e dentro do arrvazio, ele lança o menor valor dentro dos dois index dentro de item, e logo após retornamos o arrcom o menor valor.

O resultado será:

1
2
3
2
1
Enter fullscreen mode Exit fullscreen mode

Assim, concluímos mais um Resolvendo problemas no HackerRank: até a próxima.

Top comments (0)