15 Jun 2024C++ / Python / TypeScriptEasy

Min Stack

Collected C++, Python, TypeScript solutions for min stack. Add a dedicated write-up later if you want deeper notes.

auto-generated entry for Min Stack. the solution files are available below.

solution files

  • C++ min-stack/synced-solution.cpp
  • Python min-stack/synced-solution.py
  • TypeScript min-stack/synced-solution.ts

Solution files

Pythonmin-stack/synced-solution.py
class MinStack:

    def __init__(self):
        self.stack = []
        self.min_stack = []

    def push(self, val: int) -> None:
        self.stack.append(val)
        if not self.min_stack or val <= self.min_stack[-class="syntax-number">1]:
            self.min_stack.append(val)

    def pop(self) -> None:
        val = self.stack.pop()
        if val == self.min_stack[-class="syntax-number">1]:
            self.min_stack.pop()

    def top(self) -> int:
        return self.stack[-class="syntax-number">1]

    def getMin(self) -> int:
        return self.min_stack[-class="syntax-number">1]

class=class="syntax-string">"syntax-comment"># Your MinStack object will be instantiated and called as such:
class=class="syntax-string">"syntax-comment"># obj = MinStack()
class=class="syntax-string">"syntax-comment"># obj.push(val)
class=class="syntax-string">"syntax-comment"># obj.pop()
class=class="syntax-string">"syntax-comment"># param_3 = obj.top()
class=class="syntax-string">"syntax-comment"># param_4 = obj.getMin()
C++min-stack/synced-solution.cpp
class MinStack {
private:
    stack<int> st;
    stack<int> min_st;
public:
    MinStack() {

    }

    void push(int val) {
        st.push(val);
        if (min_st.empty() || val <= min_st.top()) {
            min_st.push(val);
        }
    }

    void pop() {
        int val = st.top();
        st.pop();
        if (val == min_st.top()) {
            min_st.pop();
        }
    }

    int top() {
        return st.top();
    }

    int getMin() {
        return min_st.top();
    }
};

class=class="syntax-string">"syntax-comment">/**
 * Your MinStack object will be instantiated and called as such:
 * MinStack* obj = new MinStack();
 * obj->push(val);
 * obj->pop();
 * int param_3 = obj->top();
 * int param_4 = obj->getMin();
 */
TypeScriptmin-stack/synced-solution.ts
class MinStack {
    private stack: number[] = [];
    private minStack: number[] = [];

    push(val: number): void {
        this.stack.push(val);
        if (this.minStack.length === class="syntax-number">0 || val <= this.minStack[this.minStack.length - class="syntax-number">1]) {
            this.minStack.push(val);
        }
    }

    pop(): void {
        const val = this.stack.pop();
        if (val === this.minStack[this.minStack.length - class="syntax-number">1]) {
            this.minStack.pop();
        }
    }

    top(): number {
        return this.stack[this.stack.length - class="syntax-number">1];
    }

    getMin(): number {
        return this.minStack[this.minStack.length - class="syntax-number">1];
    }
}