2014-02-05 2 views
0

Это было предложено мне в интервью,дизайн стек, который обеспечивает popMin() в постоянная время

меня впервые попросили разработать стек, который делает getMin() в постоянное время. Это довольно известная проблема, когда вы добавляете дополнительное поле в элемент стека и поддерживаете значение min. Затем меня попросили расширить эту функциональность, чтобы обеспечить постоянное время работы popMin(). Я рисую пробел о том, как это сделать. Есть идеи?

+0

Другие операции, разрешенные занять больше времени, чем обычно (например, Θ (log n) 'push')? Если нет, это нарушит привязку Θ (n log n) для сортировки сортировки. – delnan

+0

nope, все постоянное время. Я на самом деле предложил нарушить идею стека, используя связанный список для создания стека, сохранить указатели на минимальные узлы, а затем просто удалить их напрямую. Dunno, если они на самом деле чувствовали, что это нормально – Aks

+6

Я имею в виду тот факт, что эта структура данных будет математически невозможна: она позволила бы линейный алгоритм сортировки времени, вставив все элементы в этот стек, а затем повторно 'popMin()' - ING. Это, как известно, невозможно, когда вы заказываете функцию сравнения черного ящика. Если значения были целыми, это может изменить ситуацию. Были ли вы предоставлены какие-либо другие ограничения или свободы? – delnan

ответ

Смежные вопросы