java - 数组中没有重复项

标签 java c# c arrays

 void RemoveDups(){
    int f=0;
    for(int i=1;i<nelems;i++){
        if(arr[f]==arr[i]){
            for(int k=i;k<nelems;k++)
            {
                arr[k]=arr[k+1];
            }
            nelems--;
        }
        if(i==(nelems+1)){
            f++;
           i=f+1; //increment again
        }
    }
}

这是我编写的用于从数组中删除重复元素的逻辑,但这根本不起作用?我应该做哪些更改才能使其起作用?或者考虑到时间复杂性,你们有更好的逻辑来做同样的事情。我不想使用内置方法来实现这一点。

最佳答案

int end = input.length;

    for (int i = 0; i < end; i++) {
        for (int j = i + 1; j < end; j++) {
            if (input[i] == input[j]) {
                int shiftLeft = j;
                for (int k = j + 1; k < end; k++, shiftLeft++) {
                    input[shiftLeft] = input[k];
                }
                end--;
                j--;
            }
        }
    }

关于java - 数组中没有重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26311927/

相关文章:

java - 如何加快 Android 中的 SQLite 数据库插入速度?

c - 传递struct的字段名在函数内部访问

c - 如何使用 winapi c 创建 Sprite 动画?

java - 有没有办法在用户输入特定单词之前禁用 JButton?

java - 最小的 Java SVG 引擎

c# - 是否有一种(优雅的)解决方案可以在方法中进一步约束泛型类型参数?

c# - 将派生类作为基类传递给 Web 服务方法

c# - DebuggerStepThrough 属性等效于属性?

c - 所有的 omp 任务都被安排在同一个线程中

java - 在 java 中从 Berkeley DB 中检索所有记录