Это было задано в интервью, и я не смог найти решение. Сценарий состоит в том, что существует массив весов (некоторых элементов). Стоимость выбора предмета: . Теперь, если вы выберете товар с весом w, вы получите все товары в диапазоне [w, w + 4] как бесплатно. Задача алгоритма заключается в достижении минимальной стоимости и выборе всех элементов.Выбор массива/диапазона
Мой подход состоял в том, чтобы иметь максимальную кучу и перемещаться по массиву, и, пройдя по массиву, вычислите количество предметов, которые можно получить бесплатно, путем сбора текущего элемента и использования максимальной кучи для выбора предметов, которые обеспечивают максимальные значения для свободно. Интервьюер сказал ОК, но попросил меня о лучшем решении, так как сама обходящая часть стоит O (n^2).
Конкретный пример
Weights array: 1 2 3 17 10
Minimum cost 3: I pick 1, get 2 and 3 for free and then pick both 17 and 10