Стек бо ҳадди ақал
Стек бо ҳадди ақал
Вазифа
Лозим аст стекеро амалӣ кард, ки се амалиётро дастгирӣ мекунад:
push(x)— илова кардани элемент ба охирpop()— нест кардани элемент аз охирget_min()— гирифтани элементи минималӣ
Ҳамаи амалиётҳо бояд бо O(1) кор кунанд.
Идея
Стекҳои оддӣ наметавонанд минимумро зуд ёбанд — барои ин ҳар дафъа лозим меомад аз рӯйи ҳамаи элементҳо гузарем.
Ҳал:
Мо ду стек нигоҳ медорем:
st— стеки оддӣmn— стеки минимумҳо
Ба стеки mn дар ҳар қадам минимуми ҷориро мегузорем.
Ин чӣ гуна кор мекунад
Ҳангоми push(x):
x-ро ба стеки асосӣ илова мекунем- ба стеки минимумҳо илова мекунем:
x, агар стек холӣ бошадmin(x, минимуми ҷорӣ), дар акси ҳол
Ҳангоми pop():
- элементро аз ҳар ду стек нест мекунем
Ҳангоми get_min():
- қуллаи стеки минимумҳоро бармегардонем