删除数组中的重复项

时间:2014-06-15 15:54:29

标签: java arrays int

此代码存在问题。我添加了我的del方法供参考:

public void removeAllDuplicates() {
    for (int i = 0; i < counter - 1;) {
        for (int j = i + 1; j < counter;) {
            if (array[i] == array[j]) {
                del(j);
            }
        }
    }
}

public void del(int place) {
    for (int i = place; i < counter - 1; i++) {
        array[i] = array[i + 1];
    }
    array[counter] = 0;
    counter--;
}

2 个答案:

答案 0 :(得分:1)

您的first for-loopsecond for-loop在i和j上没有增量条件。 for loop的synatax是

for(initialsiationOfVariables;checkCondition;UpdationOfVariables){ }

其次,您需要分别在counterarray[]两种方法中声明或定义变量removeAllDuplicates()del()如果它们不属于类别属性

正确的代码: -

 public void removeAllDuplicates() {
    for (int i = 0; i < counter - 1;i++) {
        for (int j = i + 1; j < counter;j++) {
            if (array[i] == array[j]) {
                del(j);
            }
        }
    }
 }

 public void del(int place) {
    for (int i = place; i < counter - 1; i++) {
        array[i] = array[i + 1];
    }
    array[counter] = 0;
    counter--;
 }

答案 1 :(得分:1)

如果您正在尝试使用算法,那么这种解决方案就可以运行。

但是在这里,Set是您提问的基本想法。 Set没有重复项。那么你需要做什么才能将数组转换为Set。您可以通过实施Set data structure来实现。为了完成,我将提供一个库代码。

所以,我建议您坚持使用可以创建更优雅解决方案的基本数据结构。 :)

在最初的SO中投票,似乎很苛刻。但不要放弃继续学习。

您可以为此创建数据结构。

Set<T> mySet = new HashSet<T>(Arrays.asList(someArray));