栈(LIFO)

学pwn的看到真是惬意啊

不对…

20.有效的括号

如图

解:

后进先出

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Solution {
public:
bool isValid(string s) {
stack<char> stk;
for(char c : s) {
if(c == '(' || c == '[' || c == '{'){
stk.push(c);
}else if(c == ')' && !stk.empty() && stk.top() == '('){
stk.pop();
}else if(c == ']' && !stk.empty() && stk.top() == '['){
stk.pop();
}else if(c == '}' && !stk.empty() && stk.top() == '{'){
stk.pop();
}else{
return false;
}
}
return stk.empty();
}
};

155.最小栈

如图

解:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
class MinStack {
private:
stack<int> st;
stack<int> minSt;
public:
MinStack() {}

void push(int val) {
st.push(val);
if (minSt.empty() || val <= minSt.top()) {
minSt.push(val);
}
}

void pop() {
if(st.top() == minSt.top()) {
minSt.pop();
}
st.pop();
}

int top() {
return st.top();
}

int getMin() {
return minSt.top();
}
};

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

https://roxy5201314.github.io/2026/01/19/栈/
作者
roxy
发布于
2026年1月19日
更新于
2026年3月6日
许可协议