2016-12-18 3 views
-4

Не могли бы вы помочь в решении проблемы удаления дубликатов из отсортированного связанного списка, что означает полное удаление и предоставление только уникальных значений.Структура данных и алгоритмы java

1-> 2-> 2> 4-> null должно быть 1-> 4;

2-> 2-> null должно быть пустым;

1-> 2-> 3-> 3-> 6 должно быть 1-> 2-> 6

он должен выполнить все вышеуказанные тестовые случаи

+0

И вопрос в том, что? –

+0

Что вы пробовали? – GurV

+0

И когда вы не дадите нам свою реализацию связанного списка, это, конечно, не позволит нам писать код для вас, поэтому мы будем вести вас только в общих чертах. Ницца. –

ответ

1

Этот код будет удовлетворять всем условиям что вы указали в своем вопросе, я использовал java.util.LinkedList реализовать код:

import java.util.ArrayList; 
import java.util.Collections; 
import java.util.LinkedList; 

public class Employee { 

public static void main(String[] args) { 


    LinkedList<Integer> ll=new LinkedList<>(); 
    ArrayList<Integer> al=new ArrayList<>(); 

    // Populating the LinkedList with sample Input 
    ll.add(1); 
    ll.add(2); 
    ll.add(3); 
    ll.add(3); 
    ll.add(3); 
    ll.add(3); 
    ll.add(6); 
    ll.add(null); 


    //Searching the LinkedList for finding duplicates and then removing them 

    for (int i = 0; i < ll.size(); i++) { 

     for (int j = i+1; j <ll.size(); j++) { 

      if(ll.get(i).equals(ll.get(j))) 
      { 
       al.add(ll.get(j));  
      } 

     } 

    } 

    ll.removeAll(al); 


    // Printing the LinkedList after removing duplicates 
    for (Integer integer : ll) { 

     System.out.println(integer); 

    } 

    } 

} 

предыдущей версии моего кода не будет работать на 3 вхождений же числа, следовательно, в этом коде ArrayList будет хранящиеся элементы, которые появляются не один раз, после обнаружения всех элементов звоните несколько раз, тогда вы используете метод LinkedList.removeAll() для удаления всех этих дубликатов из LinkedList.

+0

Это не работает, если есть последовательности из более чем двух одинаковых значений. Кроме того, показатели O (n2). Это можно сделать в O (n). –

+0

Спасибо @ Abbé Résina за то, что помогли мне найти ошибку в моем предыдущем коде, теперь я ее исправил и работает для многих вхождений элемента. Производительность мудрая я не смог заставить ее работать для O (n), о которой я действительно сожалею, но этот код может быть полезен для обучения для новичков, я был бы обязан, если бы вы могли сказать мне некоторые способы сделать этот код работают в O (n). –

+0

Это похоже на работу. У меня есть предчувствие, что учитель оригинального плаката не имел в виду, что вы могли бы использовать вспомогательный 'ArrayList' для решения задания, или что кто-то в Интернете должен сделать это для него или нее. Но ОП может лучше всего сказать, правильно ли я. –

Смежные вопросы