0

現在、特定の配列から重複を削除するのに問題があります。プログラムを作成しましたが、すべてゼロを返すだけです。ハッシュセットを使用できません。

public class Assignment05a 
{
    public static void main(String args[]) 
    {
         int[] sourceArray = {1,4,5,4,1,2,3,5,9,7,12,-5,1,4,-1,-5,12,1};
         java.util.Arrays.sort(sourceArray);
         eliminateDuplicates(sourceArray); 
    }

    public static int[] eliminateDuplicates(int[] list)
    {   
         int[] noDup = new int[list.length]; 

         for (int c = 0; c < list.length-1; c++)
         {
             if (list[c] != list[c+1])
                {
                    list[c] = noDup[c];
                }
         }

         for(int i = 0; i < noDup.length; i++)
         {
             System.out.println(noDup[i]);
         }
         return noDup;
}   
}
4

2 に答える 2

1

eliminateDuplicates以下のようにメソッドを更新できると思います。

public static int[] eliminateDuplicates(int[] list){   
     List<Integer> noDup = new ArrayList<Integer>(); 
     noDup.add(list[0]);
     for (int c = 1; c < list.length-1; c++){
         if(!noDup.contains(list[c])){
             noDup.add(list[c]); 
         }
     }
     int[] noDupArray = new int[noDup.size()];
     for(int i = 0; i < noDup.size(); i++){
         noDupArray[i] = noDup.get(i);
         System.out.println(noDup.get(i));
     } 
     return noDupArray;
} 

使用したくない場合は、以下のようにメソッドをList/ArrayList更新できると思います。eliminateDuplicates

public static int[] eliminateDuplicates(int[] list){   
     int[] noDup = new int[list.length]; 
     noDup[0] = list[0];
     int noDupCount = 1;
     for (int c = 1; c < list.length-1; c++){
         boolean bAlreadyAdded = false;
         for (int d = 0; d < noDup.length-1; d++){
           if (noDup[d] == list[c]){
               bAlreadyAdded = true;
            }
         }
         if(!bAlreadyAdded){
             noDup[noDupCount++] = list[c]; 
         }
     }
     int[] newUniques = new int[noDupCount];
     for(int i = 0; i < noDupCount; i++){
         newUniques[i] = noDup[i];
         System.out.println(noDup[i]);
     }
     return newUniques;
} 
于 2012-10-07T19:10:26.550 に答える
0

おそらく、各文字をブール配列にマップし、ブール配列インデックス内のその文字の ascii 値に基づいて true または false に設定できます。これを見てください:

于 2013-01-28T20:26:08.673 に答える