2016-12-18 16 views
-4

ソートされたリンクリストから重複の除去を解決するには、完全な削除と一意の値のみを与えることをお助けください。データ構造とアルゴリズムjava

1-> 2-> 2> 4-> nullの場合は1〜4;

2-> 2-> nullである必要があります。

1-> 2-> 3-> 3-> 6それはこのコードは、すべての条件を満足するすべての上記のテストケースを

+0

質問は? –

+0

これまでに何を試みましたか? – GurV

+0

あなたがリンクリストを実装していないときは、実際にコードを記述するのをやめておきます。ニース。 –

答えて

1

を果たすべきである1-> 2-> 6

なければなりませんあなたは、あなたの質問に指定されていることを、私はコードを実装するためにjava.util.LinkedListを使用している:私のコードの前のバージョンは、したがって、このコードでは、同じ数の3つの出現箇所のために働かない

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); 

    } 

    } 

} 

をArrayListになりますすべての要素を見つけた後に、一度だけ、複数回発生する要素を格納するLinkedList.removeAll()メソッドを使用してこれらの重複をすべてLinkedListから削除します。

+0

3つ以上の同じ値のシーケンスがある場合、これは機能しません。さらに、演奏はO(n2)である。これはO(n)で行うことができます。 –

+0

@AbbéRésinaありがとうございました。私の前のコードでバグを見つけられるように助けてくれてありがとうございました。今度はそれを修正して、要素の多くの箇所で動作します。私は本当に後悔しているO(n)のためにそれを働かせることができませんでしたが、このコードは初心者のための学習目的に役立つかもしれません、私はこのコードを作るための手段を教えてください。 O(n)で働く。 –

+0

それはうまくいくようです。元のポスターの先生が、割り当てを解決するために補助的な 'ArrayList'を使うことができないことや、インターネット上の誰かが自分のためにそれを行うべきであるということを気にしていませんでした。しかし、OPは私が正しいかどうかを最もよく知ることができます。 –

関連する問題