smilevchy's blog

Life & Study & Chasing

Leetcode_Min Stack

原题链接: https://oj.leetcode.com/problems/min-stack/

class MinStack {
    private List<Integer> normalStack = new ArrayList<Integer>();
    private List<Integer> minNumStack = new ArrayList<Integer>();


    public void push(int x) {
        normalStack.add(x);

        if (minNumStack.isEmpty() || minNumStack.get(minNumStack.size() - 1) >= x) {
            minNumStack.add(x);
        }
    }

    public void pop() {
        if (normalStack.isEmpty()) return;

        int x = normalStack.get(normalStack.size() - 1);
        normalStack.remove(normalStack.size() - 1);

        if (!minNumStack.isEmpty() && x == minNumStack.get(minNumStack.size() - 1)) {
            minNumStack.remove(minNumStack.size() - 1);
        }
    }

    public int top() {
        if (normalStack.isEmpty()) return 0;

        return normalStack.get(normalStack.size() - 1);
    }

    public int getMin() {
        if (minNumStack.isEmpty()) return 0;

        return minNumStack.get(minNumStack.size() - 1);
    }
}

algorithm

« Something about Installing Genymotion Leetcode_Majority Element »