Исходя из общего стандарта программирования, вы всегда можете дважды перечислить коллекции, а затем сравнить источник и цель.
И если ваше внутреннее перечисление всегда начинается с одной записи после источника, это довольно эффективно (псевдокод для последующего выполнения)
foreach ( array as source )
{
// keep track where we are in the array
place++;
// loop the array starting at the entry AFTER the current one we are comparing to
for ( i=place+1; i < max(array); i++ )
{
if ( source === array[place] )
{
destroy(array[i]);
}
}
}
Вы могли бы добавить разрыв; заявление после уничтожения, но тогда вы обнаружите только первый дубликат, но если это все, что у вас когда-либо будет, то это будет хорошая небольшая оптимизация.