题意

设计一个支持 pushpoptop 操作,并能在常数时间内检索到最小元素的栈。

实现 MinStack 类:

  • MinStack() 初始化堆栈对象。
  • void push(int val) 将元素val推入堆栈。
  • void pop() 删除堆栈顶部的元素。
  • int top() 获取堆栈顶部的元素。
  • int getMin() 获取堆栈中的最小元素。

思路image-20240616152225957

代码

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
class MinStack {
public:
stack<int> A, B;
MinStack() {}

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

void pop() {
if (A.top() == B.top())
B.pop();
A.pop();
}

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

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