从整数数组中删除重复项

Ali*_*-J8 12 java arrays

我有编码这个问题:

编写一个名为static的方法removeDuplicates,该方法将整数数组作为输入,并返回一个新的整数数组,并删除所有重复项.例如,如果输入数组具有元素{4,3,3,4,5,2,4},则生成的数组应为{4,3,5,2}

这是我到目前为止所做的

public static int[] removeDuplicates(int []s){
    int [] k = new int[s.length];
    k[0]=s[0];
    int m =1;
    for(int i=1;i<s.length;++i){
        if(s[i]!=s[i-1]){
            k[m]=s[i];
            ++m;
        }//endIF
    }//endFori
    return k;
}//endMethod
Run Code Online (Sandbox Code Playgroud)

小智 7

要保留排序并删除整数数组中的重复项,可以尝试以下操作:

public void removeDupInIntArray(int[] ints){
    Set<Integer> setString = new LinkedHashSet<Integer>();
    for(int i=0;i<ints.length;i++){
        setString.add(ints[i]);
    }
    System.out.println(setString);
}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.


Sub*_*der 5

试试这个 -

public static int[] removeDuplicates(int []s){
    int result[] = new int[s.length], j=0;
    for (int i : s) {
        if(!isExists(result, i))
            result[j++] = i;
    }
    return result;
}

private static boolean isExists(int[] array, int value){
    for (int i : array) {
        if(i==value)
            return true;
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

  • 应该保存订单的唯一解决方案.但是有两个问题:1)将跳过0 2)如果有重复,最后会有0.然而,它们都很容易解决 (3认同)

And*_*rup 1

您还可以将数组元素放入 a 中Set,其语义恰恰是它不包含重复元素。

  • `Set set = new HashSet( Arrays.asList( s ) )` 它将无法编译。 (2认同)