public void noDups() {
int rem = nElems;
for (int t = 0; t < nElems; t++) {
for (int t2 = 1; t2 < rem; t2++) {
long mydup = a[t];
long mydup2 = a[t+1];
if (mydup == mydup2) {
delete(mydup);
}
}
rem--;
}
}
public void delete(long value)
{
int j;
for(j=0; j<nElems; j++) // look for it
if( value == a[j] )
break;
else // found it
{
for(int k=j; k<nElems; k++) // move higher ones down
a[k] = a[k+1];
nElems--; // decrement size
//return true;
}
如何添加名为noDups()的方法 从先前排序的数组中删除重复项而不中断顺序。 注意:假设数组中只有一个值可以有重复项。例如,在 {1,3,4,4,4,4,5,7,9}只有4个重复。
答案 0 :(得分:0)
我注意到了一些事情:
- for
下有两个noDups
循环,但未使用变量t2
。
- 您重新定位数组中的所有项目,但数组的长度相同。
- 如果没有运行代码,我猜您在Array Index out of range
的{{1}}部分k+1
因else
而发现delete
错误
答案 1 :(得分:-1)
您可以尝试使用ArrayList为您的解决方案......
请参阅:
//for initialize
List<Long> list = new ArrayList<Long>();
//for add a new number
list.add(10l);
//for remove
list.remove(10l);
//for verify if exists
list.contains(10l);