此代码存在问题。我添加了我的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--;
}
答案 0 :(得分:1)
您的first for-loop
和second for-loop
在i和j上没有增量条件。
for loop
的synatax是
for(initialsiationOfVariables;checkCondition;UpdationOfVariables){ }
其次,您需要分别在counter
和array[]
两种方法中声明或定义变量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));