实现一个Stack,push和pop函数,以及一个输出当前栈内最小值的min函数,要求这三个函数都是O(1)

实现一个Stack,push和pop函数,以及一个输出当前栈内最小值的min函数,要求这三个函数都是O(1)


显然,需要时间换空间

栈 A, 辅助栈 minStack,存储最小元素,显然,从栈底到栈顶,非递增

Elem getTop(minStack) {
    return get(minStack);
}

void push(element) {
    if(element <= getTop()) {
        push(element, B);
    }
    push(element, A);
}

void pop() {
    Elem element = pop(A);
    if(element == getTop()) {
        pop(B);
    }
}

Element getMin() {
    return getTop(minStack);
}

你可能感兴趣的:(stack)