O (Nlogn) алгоритм-найти три равномерно расположенных в двоичной строке


У меня был этот вопрос на тесте алгоритмов вчера, и я не могу понять ответ. Это сводит меня с ума, потому что он стоил около 40 очков. Я считаю, что большая часть класса не решила его правильно, потому что я не придумал решение за последние 24 часа.

учитывая произвольную двоичную строку длины n, найдите три равномерно расположенных в строке, если они существуют. Напишите алгоритм, который решает эту задачу в O (n * log(n)) время.

таким образом, строки, подобные этим, имеют три "равномерно расположенных": 11100000, 0100100100

edit: это случайное число, поэтому оно должно работать для любого числа. Примеры, которые я привел, должны были проиллюстрировать" равномерно распределенное " свойство. Таким образом, 1001011 является допустимым числом. С 1, 4 и 7-это те, которые равномерно распределены.

30 170

30 ответов: