Sorry, в программе ошибка (писал без компьютера );
int cnt = 0;
for ( int i = 0; i < a.size(); ++i )
{
if ( cnt > 0 && a[i] != num )
--cnt;
else
{
++cnt;
if ( cnt == 1 )
num = a[i];
}
}
2 Андрей Тарасевич
>"Когда говорят "за один проход" имеется в виду — за O(N) операций. В твоем варианте понадобится порядка O(N) + O
>(M) операций, где M — длина массива счетчиков.".
Уважаемый "Brainbench C and C++ Programming MVP". Будьте добры разобраться в том, что написано, прежде чем писать о каком-то "массиве счетчиков", которого нет. Дополнительных массивов НЕТ. a[] — исходный массив с числами.
2Lexey.
По-моему, твой вариант будет работать. Решение короче и симпатичнее, чем у меня :)).