GeraProva GeraProva Provas com IA para professores do Brasil
Computação1º anoBNCC EF15CO02Difícil⏱ longo

Projete um algoritmo, em pseudocódigo, que receba uma lista ligada simples L com n nós e remova todos os nós…

Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva

Habilidade BNCC EF15CO02

Construir e simular algoritmos, de forma independente ou em colaboração, que resolvam problemas simples e do cotidiano com uso de sequências, seleções condicionais e repetições de instruções.

Fonte: Base Nacional Comum Curricular (MEC).

Questão

Projete um algoritmo, em pseudocódigo, que receba uma lista ligada simples L com n nós e remova todos os nós cujos valores aparecem mais de uma vez (manter apenas valores que ocorrem exatamente uma vez). Descreva estruturas auxiliares, passos e analise complexidade temporal e espacial.

✍️ Questão dissertativa: veja abaixo a resposta esperada e a explicação.

Resposta esperada

1) Estrutura auxiliar: dicionário (hash map) counts que mapeia valor -> frequência. 2) 1ª passagem: percorrer L e para cada nó counts[val]++ (O(n) tempo). 3) 2ª passagem: usar ponteiro prev=null, cur=L.head; para cada cur: se counts[cur.val]>1 então remover cur ajustando prev.next; senão prev=cur; avançar cur (remover atual cuida de liberar nó). Isso é O(n) tempo adicional. 4) Complexidade: tempo O(n), espaço O(n) para o hash map; operação in-place na lista quanto à reorganização de ponteiros, sem copiar todos os nós. Pseudocódigo resumido: counts = {}; for node in L: counts[node.val] += 1; prev = null; cur = L.head; while cur != null: if counts[cur.val] > 1: if prev == null: L.head = cur.next else prev.next = cur.next cur = cur.next else: prev = cur; cur = cur.next Observações: se restrição de espaço proibir estrutura auxiliar, pode-se ordenar os valores ou usar algoritmo quadrático de comparação par a par; isso aumenta tempo para O(n^2) e evita espaço extra.

Explicação

A solução proposta utiliza um dicionário para contar a frequência de cada valor na lista, permitindo identificar quais devem ser removidos em uma segunda passagem. A abordagem é eficiente, com complexidade de tempo linear, já que cada nó é percorrido duas vezes, e a complexidade espacial é linear devido ao armazenamento das frequências. Além disso, a manipulação da lista é feita in-place, evitando a necessidade de estruturas auxiliares adicionais, exceto o dicionário.

Raio-X da questão

Dificuldade Difícil
Bloom Criar
Leitura alto
Discriminação alto
Peso pedagógico alto
Autonomia do enunciado completo
Cobertura da habilidade multipla
🧪 Simulado🩺 Diagnóstico🧮 Exige cálculo🏠 Cotidiano🔗 Interdisciplinar⭐ Representativa✍️ interpretativa🧩 desafio
🎯 Conceito central

algoritmo de remoção

📌 Objetivo

avaliacao

🧱 Pré-requisitos

listas ligadas simples · algoritmos de busca

📚 Reveja

Revisar conceitos de listas ligadas e análise de algoritmos.

⚠️ Erro mais comum

O aluno pode confundir a lógica de remoção, mantendo elementos que aparecem mais de uma vez em vez de removê-los.

🌎 Tema transversal

ciencia_tecnologia

🤝 Socioemocional

pensamento_critico

🏫 Contexto

abstrato

Questões parecidas com resolução

Todas as questões de Algoritmos

🔎 Procurar outra questão

Procure no banco do GeraProva pelo tema ou por um trecho do enunciado. Cada questão já vem com resolução comentada e a análise de cada alternativa.

Professor: monte a prova com questões como esta, com gabarito e folha de respostas, em 30 segundos. Ver planos · Blog

Ocorreu um erro inesperado. Recarregar X

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.