Добрый день.
Хочется найти быстрое решение задачи: дан массив
длины
символов, требуется построить массив чисел
, такой что на
-ой позиции массива
стоит число
тогда и только тогда, когда
или
и число x максимальное с таким свойством из тех, что
, притом для одинаковых символов из массива A должна быть ровно одна позиция
, где стоит единица (т.е. при первом появлении символа в массиве A). Пример: массив
; массив
.
Решение есть и даже за
, но хочется попроще.
Составить хэш таблицу
символов, изначально в каждой ячейке которой поместить
. После поочерёдно пробежаться по массиву
и выполнить операцию: на
-ом шаге в
вписать
и заменить
на
.
Меня именно не устраивает в этом решении использование хэш функции. Задача очень естесственная и уже несколько раз встречалась на практике. Понятно, за ассимптотикой некуда гнаться, хочется за константой.
Заранее спасибо за Ваши советы.
P.S.: Понятно, что тут можно под каждый символ создать массив, там всего будет 24 ячейки - не велика потеря, но изначально задача стоит так, что и в первом массиве - числа.