Минимальная стоимость операций - PullRequest
0 голосов
/ 02 ноября 2019

Я сталкивался с этим вопросом в недавнем интервью:

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

Прекрасныймассив - это массив, который имеет вид A1^f1 A2^f2 A3^f3 ..., где все Ai различны, а fi - число раз, когда это происходит. т. е. {3^2 4^3 1^2} = {3,3,4,4,4,1,1}

Единственная разрешенная операция - выбрать любое число в массиве и заменить все его вхождения на новое число. Стоимость операции - частота преобразованного целого числа. то есть {1,3,1,3,1} => {1,1,1,1,1}. Здесь все 3 заменены на 1, а стоимость операции равна частоте 3 = 2.

Ограничения:

1 <= N <= 100000
1 <= Ai <= 200000

например,

A = {1,1,2,3,2,3} => {1,1,2,2,2,2}. Total cost = 2 (3 changed to 2)

A = {2,2,2,2,4}. Total cost = 0 (already beautiful array)

Я пробовал гдеЯ сохранил частоту всех элементов до каждого индекса в массиве. Затем, подбирая пару крайних концов вхождения каждого числа, я добавил частоту всех элементов, не встречающихся между этими двумя концами. Но, как и ожидалось, это не было оптимальным решением. Какой оптимальный подход мы можем применить для этой проблемы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...