-4

メソッドを使用して配列から重複した数値を削除しようとしていますが、残念ながら解決できません。これは私がこれまでに行ったことです:

//method code
public static int[] removeDuplicates(int[] input){
    int []r=new int[input.length];

    for (int i = 0; i < input.length; i++) {
        for (int j = 0; j < input.length; j++) {
            if ((input[i]==input[j]) && (i != j)) {
                return r;
            }
        }
    }
    return r;
}
4

3 に答える 3

1

あなたはこのようにすることができます:

public static int[] removeDuplicates(int[] input){
    boolean[] duplicate = new boolean[input.length];
    int dups = 0;
    for (int i = 0; i < input.length; i++) {
        if(duplicate[i])
            continue;
        for (int j = i + 1; j < input.length; j++) {
            if ((input[i]==input[j])) {
                duplicate[j] = true; // j is duplicate
                ++dups;
            }
        }
    }
    int[] r = new int[input.length] - dups;
    int index = 0;
    for(int i = 0; i < input.length; ++i)
        r[index++] = input[i];
    return r;
}

で行うこともできますO(n log n)C++ コード

于 2013-05-20T23:44:18.357 に答える
0

コレクションに重複を入れたくない場合は、そもそも配列を使用するべきではありません。代わりにセットを使用すると、そもそも削除するために重複することはありません。

「時々」だけ重複したくない場合は、状況をさらに説明することをお勧めします。

于 2013-05-21T02:45:22.103 に答える