2016-04-08 110 views
-1

我想在這裏這個網站來解決的任務是linkHackerRank丟失號碼

採樣輸入

樣本輸出

說明

204是存在於兩個陣列。它的頻率在A中是2,而在B中的頻率是3。同樣,205和206在A中出現兩次,但在B中出現 三次。所以,這三個數字是我們的輸出。 號碼的其餘部分在兩個列表中都具有相同的頻率。

有出4情況下,我已經通過了第0,第2和第3的測試案例,但是第一次測試案例給了我錯誤的輸出和第4個測試案例給已逾時錯誤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

糟糕的英語不錯。 Sinserity不是藉口。爲了幫助我們爲您提供幫助,請展示您的代碼失敗的測試用例 - 預期和實際輸出。 –

+0

https://drive.google.com/open?id=0B912ghT5m4YSTzc1dFktNWtPdUU 這裏是第一個測試用例的輸入和輸出文件。 –

回答

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,但我不確定它是如何處理重複的。