Re[11]: Задачка
От: Vitalische  
Дата: 04.10.01 09:26
Оценка:
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.
По-моему, твой вариант будет работать. Решение короче и симпатичнее, чем у меня :)).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.