Stack
Stack
1.单调栈
(1) 使用单调栈的情景:
a. 输出的string的字母按照lexicographical order(Leetcode #316)
b. 处理的问题的具有单调性,比如Leetcode #456, #496
(2) 模板
// 单调递增栈
for (int num : nums) {
while (!stack.isEmpty() && stack.peek() > num) {
stack.pop();
}
stack.push(num);
}
// 单调递减栈
for (int num : nums) {
while (!stack.isEmpty() && stack.peek() < num) {
stack.pop();
}
stack.push(num);
}
2. 树的遍历顺序
涉及到树的三种遍历顺序问题也很适合用stack, 比如Leetcode #173和#255
3. 表达式转换
许多表达式适合用stack,尤其之前的计算结果之后可能需要,比如Leetcode #150, #224 和 #439
4. Simulate Recursion
许多表达式适合用stack,尤其之前的计算结果之后可能需要
Last updated
Was this helpful?