суббота, 27 октября 2007 г.

Задачка

Вот тут взял.
Дан список из n чисел, из которых строго больше n/2 - одно и то же число. Найти это число, используя минимальные ресурсы.
Из комментариев мало что понял..
Мое решение:
Берем первый элемент. Проходим дальше по списку до первого несовпадения. Выбрасываем. Возвращаемся назад если есть куда либо идем вперед если назад некуда. Повторяем...То что не выбросилось в итоге и есть результирующий элемент. Но нашел в ответах и лучше... по крайней мере красивее.
А просто завести M счётчиков, где M разрядность числа. Затем для каждого числа в массиве если на битовой позиции K стоит 1, то увеличить К-й счётчик, иначе уменьшить.

хотя мое больше подходит для произвольных елементов для которых определена операция сравнения.