TOPIC

pq Time limit exceeded?

pcmendes asked 4 years ago

Fiz esse codigo e aparentemente está batendo com o que é pedido no problema: N=int(input()) l=[] ul=[] v=int(input()) l.append(v) ul.append(v) for i in range(N-1): v=int(input()) ul.append(v) for j in range (len(l)): if v == l[j]: break else: if j == len(l)-1: l.append(v) l.sort() for i in range (len(l)): print(l[i], "aparece", ul.count(l[i]), "vez(es)")

Mas quando envio a resposta ficadando -Time Limit Exceeded-, alquem pode me dar uma dica do motivo de tá dando esse erro?

Remember not post solutions. Your post may be reviewed by our moderators.

  • PierreVieira replied 4 years ago

    Código Lento

    Amigo primeiramente irei lhe dar a dica de que poste o seu código em formato de código aqui nos comentários pois fica mais fácil de entender oque você quis fazer, basta clicar no ícone </> e colocar o seu código dentro.

    Quanto ao seu problema acontece que você está usando muitos loops, o que aumenta a ordem de complexidade do seu código. Perceba que internamente o len() também é um loop pois para saber o seu tamanho precisa percorrer toda a lista. Pode ser que você não tenha ainda muita maldade em analisar complexidade de códigos, mas o básico que você precisa saber para problemas como esse (timelimit 1) é: evite loops dentro de outros loops o máximo que você conseguir. Caso queira saber como solucionei esse problema basta acessar o link do meu github: https://github.com/PierreVieira/URI/blob/master/AD-HOC/1171%20-%20Frequ%C3%AAncia%20de%20N%C3%BAmeros.py