Таблица последовательности Раздел Описание и реализация кода
Описание заголовка: Удалить все элементы, значения которых повторяются, из таблицы упорядоченной последовательности, чтобы все элементы в таблице имели разные значения.
Идея алгоритма: этот раздел представляет собой упорядоченный список. Элементы с одинаковым значением также должны находиться в последовательных позициях. Используя идею, аналогичную сортировке прямым вставкой, первый элемент изначально рассматривается как неповторяющийся упорядоченный список. Затем оцените по очереди, совпадают ли следующие элементы с последним элементом предыдущего неповторяющегося упорядоченного списка. Если они совпадают, продолжайте судить в обратном порядке. Если они отличаются, вставьте их в конец предыдущего неповторяющегося упорядоченного списка. повторяющийся упорядоченный список до тех пор, пока не будет оценен конец списка.
Код реализации:
bool del_same(sqList &L)
{
int i,j;
if(L.length==0)
return false;
for (i = 0,j=1; j< L.length; j++)
{
if (L.data[i]!=L.data[j])
L.data[++i]=L.data[j];
}
L.length = i+1;
return true;
}
Если этот вопрос изменить на неупорядоченную таблицу, а временная сложность должна быть O (n), то можно использовать хеш-таблицу.