5、栈、队列、优先队列

lidong / 2023-05-12 / 原文

内容来自刘宇波老师玩转算法面试

1、栈的基础应用

20 - 有效的括号

image

public static boolean isValid(String s) {
    Stack<Character> stack = new Stack<>();

    char[] chars = s.toCharArray();
    for (char c : chars) {
        if (c == '(' || c == '{' || c == '[') stack.push(c);
        else {
            if (stack.isEmpty()) return false;
            char top = stack.pop();
            if (c == ')' && top != '(') return false;
            if (c == '}' && top != '{') return false;
            if (c == ']' && top != '[') return false;
        }
    }

    return stack.isEmpty();
}

更多问题
150 - 逆波兰表达式求值
71 - 简化路径

2、栈和递归的密切关系