2016-04-08 9 views
-1

私はここで、このウェブサイトでタスクを解決しようとしていますlinkHackerRank欠番

あるサンプル入力

サンプル出力

説明

204は、両方の配列に存在します。同様に、205と206はAで2回発生しますが、Bでは2,で3回発生します。したがって、これらの3つの数値は私たちの出力です。 の残りの数字は、両方のリストで同じ頻度を持ちます。

4つのテストケースがありますが、0番目、2番目、3番目のテストケースに合格しましたが、1番目のテストケースでは誤った出力が得られ、4番目のテストケースではタイムアウトエラーが発生します。このタスクを解決するための良いアルゴリズムやロジックを教えてください。私の友人を助けてください。

私の悪い英語のために申し訳ありません、私を許してください。ここで

import java.io.*; 
import java.util.*; 

public class Solution { 

    public static void main(String[] args) { 
     Scanner sc = new Scanner(System.in); 
     ArrayList<Integer> al = new ArrayList<Integer>(); 
     ArrayList<Integer> al1 = new ArrayList<Integer>(); 
     int size1 = sc.nextInt(); 
     for(int i = 0 ; i < size1 ; i++){ 
      al.add(sc.nextInt()); 
     } 


     int size2 = sc.nextInt(); 
     for(int i = 0 ; i < size2 ; i++){ 
      al1.add(sc.nextInt()); 
     } 

     Iterator<Integer> ir = al.iterator(); 
     while(ir.hasNext()){ 

      int num = ir.next(); 
      System.out.println("Number"+num); 
      if(al1.contains(num)){ 
       System.out.println("Before removing number from second arraylist : "+ al1); 
       al1.remove(new Integer(num)); 
       System.out.println("After removing number from second arraylist : "+ al1); 
      } 
     } 
     Collections.sort(al1); 
     for(int i : al1) 
     System.out.print(i+" "); 
    } 
} 

私の出力です:

Number203 
Before removing number from second arraylist : [203, 204, 204, 205, 206, 207, 205, 208, 203, 206, 205, 206, 204] 
After removing number from second arraylist : [204, 204, 205, 206, 207, 205, 208, 203, 206, 205, 206, 204] 
Number204 
Before removing number from second arraylist : [204, 204, 205, 206, 207, 205, 208, 203, 206, 205, 206, 204] 
After removing number from second arraylist : [204, 205, 206, 207, 205, 208, 203, 206, 205, 206, 204] 
Number205 
Before removing number from second arraylist : [204, 205, 206, 207, 205, 208, 203, 206, 205, 206, 204] 
After removing number from second arraylist : [204, 206, 207, 205, 208, 203, 206, 205, 206, 204] 
Number206 
Before removing number from second arraylist : [204, 206, 207, 205, 208, 203, 206, 205, 206, 204] 
After removing number from second arraylist : [204, 207, 205, 208, 203, 206, 205, 206, 204] 
Number207 
Before removing number from second arraylist : [204, 207, 205, 208, 203, 206, 205, 206, 204] 
After removing number from second arraylist : [204, 205, 208, 203, 206, 205, 206, 204] 
Number208 
Before removing number from second arraylist : [204, 205, 208, 203, 206, 205, 206, 204] 
After removing number from second arraylist : [204, 205, 203, 206, 205, 206, 204] 
Number203 
Before removing number from second arraylist : [204, 205, 203, 206, 205, 206, 204] 
After removing number from second arraylist : [204, 205, 206, 205, 206, 204] 
Number204 
Before removing number from second arraylist : [204, 205, 206, 205, 206, 204] 
After removing number from second arraylist : [205, 206, 205, 206, 204] 
Number205 
Before removing number from second arraylist : [205, 206, 205, 206, 204] 
After removing number from second arraylist : [206, 205, 206, 204] 
Number206 
Before removing number from second arraylist : [206, 205, 206, 204] 
After removing number from second arraylist : [205, 206, 204] 
204 205 206 
+0

問題を投票する前の理由を誠実にご記入ください。それは私の誠実な要求です。 –

+0

悪い英語は悪くありません。悲しみは言い訳ではありません。私たちのお手伝いをするために、あなたのコードが失敗したテストケースを、期待されたものと実際の結果を示してください。 –

+0

https://drive.google.com/open?id=0B912ghT5m4YSTzc1dFktNWtPdUU は、第1テストケースの入出力ファイルです。 –

答えて

0

には、ArrayListを使用しているので、これを解決するための簡単な方法は、のようになります。

for (Integer i : al) { // This loops through the array. 
    al1.remove(i); 
} 

// Now al1 have the desired elements, now all you have to do is put them in order. 

それは、最も効率的ではありませんで、私が今考えている最も簡単なコードです。

注:私はremoveAllを使用しますが、重複で何をするのかは分かりません。