Предположим, что я отсортировал массив A длиной n так 1 Мне нужно написать псевдокод программы, которая дает вывод всех вхождений каждого элемента.
Время выполнения алгоритма должно быть максимально k (c1 + c2 * log (n)).с использованием двоичного поиска для подсчета вхождений
пример - А = [1,1,2,2,2,5,5,5,5] ----> (1,2) (2,3) (5,4)
Я думал об использовании двоичного поиска, когда первый элемент, который я хочу сосчитать, - A [1], и мне нужно найти его последнее вхождение.
, то следующий элемент - это A [последний индекс появления + 1] и т. Д.
Мне немного сложно с идеей и записать его как псевдокод.
Тпх
Какие конкретные проблемы у вас есть? Сама идея поиска первого и последнего вхождения с использованием двоичного поиска правильная. – kraskevich
обычный бинарный seacrh даст мне индекс определенного числа, но теперь у меня одинаковое число в некоторых индексах - как мне изменить бинарный seacrh, чтобы каждый раз находить только последний? @ user2040251 – john
Вам нужно подсчитать «сколько вхождений X» или «какие числа есть и счет каждого из них»? – David162795