UCSD CSE Summer Series

Hi all!

Here with summer series updates!

🔗 Links and Resources

The website https://cse-summer-series.github.io/2025/ has all of the summer series messages.

✅ Do Now! (Do one, some, or all!)

The code from today’s video is copied here for your reference:

import java.util.LinkedList;
class MinStack {
    // <-- top
    // empty
    // 50           push 50     min 50  top 50
    // 100 50       push 100    min 50  top 100
    // 25 100 50    push 25     min 25  top 25
    // 90 25 100 50 push 90     min 25  top 90
    // 25 100 50    pop         min 25  top 25
    // 100 50       pop         min 50  top 100
    LinkedList<Integer> stack = new LinkedList<Integer>();
    LinkedList<Integer> mins = new LinkedList<Integer>();
    public MinStack() {}
    
    public void push(int val) {
        stack.addFirst(val);
        if(mins.size() == 0) { mins.addFirst(val); }
        else if(val <= mins.getFirst()) { mins.addFirst(val); }
    }
    
    public void pop() {
        // new Integer(5) == new Integer(5) actually false!
        if(stack.getFirst().equals(mins.getFirst())) {
            mins.removeFirst();
        }
        stack.removeFirst();
    }
    
    public int top() {
        return stack.getFirst();
    }
    
    public int getMin() {
        return mins.getFirst();
    }
}

/**
 * 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();
 */