【算法练习】leetcode算法题合集之栈和队列篇

普通栈

LeetCode20 有效的括号

LeetCode20 有效的括号

定义一个辅助map,判断字符串的字符是否在]})中。一旦是右括号就要弹出元素,判断匹配。

class Solution {
    public boolean isValid(String s) {
        if (s.length() % 2 == 1) {
            return false;
        }
        Map<Character, Character> pairs = new HashMap<>();
        pairs.put(')', '(');
        pairs.put(']', '[');
        pairs.put('}', '{');
        Stack<Character> stack = new Stack<>();
        for (int i = 0; i < s.length(); i++) {
            if (pairs.containsKey(s.charAt(i))) {
                if (stack.isEmpty() || pairs.get(s.charAt(i)) != stack.peek()) {
                    return false;
                }
                stack.pop();
            } else {
                stack.push(s.charAt(i));
            }
        }
        if (!stack.isEmpty()) {
            return false;
        }
        return true;
    }
}

LeetCode155. 最小栈

LeetCode155. 最小栈

使用栈记录最小的元素。

class MinStack {

    private Stack<Integer> stack;

    private Stack<Integer> minStack;

    public MinStack() {
        stack = new Stack<>();
        minStack = new Stack<>();
    }

    public void push(int val) {
        stack.push(val);
        if (minStack.isEmpty() || minStack.peek() >= val) {
            minStack.push(val);
        }
    }

    public void pop() {
        Integer pop = stack.pop();
        if (pop.equals(minStack.peek())) {
            minStack.pop();
        }
    }

    public int top() {
        return stack.peek();
    }

    public int getMin() {
        return minStack.peek();
    }
}

LeetCode232. 用栈实现队列

LeetCode232. 用栈实现队列

【算法练习】leetcode算法题合集之栈和队列篇_第1张图片

你可能感兴趣的:(算法,算法,leetcode,职场和发展)