1025 - Onde está o Mármore?
Existem diversas formas de se resolver este problema, veja qual é a melhor para você.
Descrição
Solução
O problema consiste de ordenar todos os mármores em ordem crescente e ir respondendo qual a primeira posição de um determinado número de mármore.
Para solucioná-lo, podemos usar duas diferentes abordagens:
Ordenar o vetor de mármores e fazer cada consulta com pesquisa binária, com complexidade O(log n) de tempo para cada consulta
Acumular todos os valores de mármore em um vetor auxiliar, usando-o para contar quantos mármores de cada tem na entrada (ver Counting sort) para poder fazer as consultas em tempo O(1) (mas com gasto de espaço proporcional ao maior N possível)
Na versão em JavaScript, usar lines.shift() é lento demais, então tive que utilizar o acesso direto.
Alternativa 1 - Pesquisa Binária
Complexidade
Notação assintótica
Tempo
O(log n)
Espaço
O(1)
Alternativa 2 - Contando os mármores
É importante notar que não sabemos o valor máximo m que N pode assumir.
Complexidade
Notação assintótica
Tempo
O(1)
Espaço
O(m)
Last updated
Was this helpful?