У меня есть массив типа long, и я просто пытаюсь создать код, который найдет и удалит дубликаты. Это несколько работает, но в нем есть некоторые ошибки. Я не уверен, что я делаю неправильно. Я очень благодарен за помощь.Удаление дубликатов из массива в Java
Я добавил число: 77, 44, 22, 11, 66, 33, 55, 55, 99, 99, 33, 0, 0
и выход: 77, 44, 22, 11 , 66, 33, 55, 55, 99, 99
так стерли 33 дубликата и оба 0 и полностью пропущено 55 и 99.
Вот мой код до сих пор:
nElems является размер матрицы
public int noDups()
{
int duplicates = 0;
for(int i = 0; i<nElems; i++)
{
for(int j = i+1; j<nElems; j++)
{
if(i == j)
{
break;
}
else if (a[i] == a[j])
{
duplicates++;
delete(j);
nElems--;
}
}// end for j
}// end for i
return duplicates;
}// noDups()
Мои Удалять выглядит следующим образом:
public boolean delete(long value)
{
int j;
for(j=0; j<nElems; j++) // look for it
{
if(value == a[j])
break;
if(j==nElems) // can’t find it
{
return false;
}
else // found it
{
for(int k=j; k<nElems; k++) // move higher ones down
{
a[k] = a[k+1];
nElems--; // decrement size
return true;
}
}
}// end for i
} // end delete()
может быть, вы должны смотреть [этот вопрос] (http://stackoverflow.com/questions/10457532/removing-duplicates-from-list-of- списки-и-сохранить-списки) и адаптировать его к вашим потребностям –
Можете ли вы использовать набор? Каковы ваши требования/ограничения? В каком контексте будет выполняться этот алгоритм? – Raffaele
Не могли бы вы показать код для 'delete'? – dasblinkenlight