Тест по программированию - Codility - Dominator [закрыто]

У меня только что возникла проблема с кодировкой, которая доставила мне неприятности, и я все еще пытаюсь выяснить, как могли бы быть соблюдены ограничения сложности пространства и времени.

Проблема заключается в следующем: Доминирующий элемент в массиве - это тот, который занимает более половины позиций в массиве, например:

{3, 67, 23, 67, 67}

67 является доминирующим членом, потому что он появляется в массиве в позициях 3/5 (& gt; 50%).

Теперь ожидается, что вы предоставите метод, который принимает массив и возвращает индекс доминирующего члена, если он существует, и -1, если его нет.

Легко, правда? Ну, я мог бы решить проблему легко, если бы не следующие ограничения:

Expected time complexity is O(n) Expected space complexity is O(1)

Я могу видеть, как вы могли бы решить это за O (n) время с O (n) пространственными сложностями, а также за O (n ^ 2) время с O (1) космическими сложностями, но не тот, который соответствует O (n) времени и O (1) пробел.

Я был бы очень признателен за решение этой проблемы. Не беспокойтесь, срок истек несколько часов назад (у меня было всего 30 минут), поэтому я не пытаюсь обмануть. Благодарю.

Ответы на вопрос(24)

Ваш ответ на вопрос